The invention provides a method and device for detecting, a function is not defined in the executable program method includes: when detected shared database updates, access to the executable configuration dependencies in shared library update time, and the last update time as more new time dependencies; if the update a little bit earlier in dependency update time executable program, access to shared libraries and lists the corresponding executable program links; for each function list function, if the function in the executable program source code or executable program links shared libraries are not defined, generate error messages. The application in the detection of the shared library is updated, if the executable program update time earlier than its configuration dependencies in a shared library recently updated in time, check the list of functions in the corresponding function are defined, so that the technician detect undefined function, avoid by update the shared library and introduce other errors, in order to improve the efficiency of project development.
【技术实现步骤摘要】
可执行程序中未定义函数的检测方法及装置
本申请涉及计算机
,尤其涉及一种可执行程序中未定义函数的检测方法及装置。
技术介绍
通常Linux系统中包含的程序代码文件有可执行程序和共享库,如果可执行程序的源码有调用共享库中的函数,则在可执行程序的配置文件中会指定链接该共享库,表示可执行程序直接链接该共享库,由于该共享库也可能有调用另一共享库中的函数,因此在该共享库的配置文件中也会指定链接另一共享库,此时表示可执行程序间接链接另一共享库。编译器在编译可执行程序的源码创建该可执行程序时,需要检查该可执行程序涉及的所有函数(包括源码中的函数、直接或间接链接共享库中的函数)是否有定义。在项目工程中的一个可执行程序直接链接共享库A和共享库B,在该可执行程序出现问题,需要修改可对应的源码时,技术人员可能会在直接链接的共享库A中新增对共享库B中函数(例如,函数1)的调用,而忘记在共享库A的配置文件中添加对共享库B的链接,以修复该可执行程序的问题,然后将项目工程的所有源码提交到代码服务器。当其他技术人员读取该项目工程的源码进行编译时,由于该可执行程序有链接共享库A和共享库B,因此编译对应的源码不会出现问题,而如果有另一可执行程序直接链接共享库A,而未直接或间接链接共享库B,由于共享库A有调用共享库B中的函数,因此,编译器在编译另一可执行程序,检查另一可执行程序涉及的所有函数是否有定义时,无法从直接或间接链接的共享库中找到函数1的定义,导致编译失败的问题。在相关技术中,要求技术人员在对某一源码修改后,必须将本地已编译创建的可执行程序和共享库全部删除,使编译器重新执行一遍所 ...
【技术保护点】
一种可执行程序中未定义函数的检测方法,其特征在于,所述方法包括:当检测到有共享库更新时,获取为可执行程序预先配置的依赖项中的共享库的更新时间点,并将最近的更新时间点作为所述依赖项的更新时间点;若所述可执行程序的更新时间点早于所述依赖项的更新时间点,则获取所述可执行程序所链接的共享库,并获取所述可执行程序对应的函数列表;针对所述函数列表中的每个函数,若该函数在所述可执行程序的源码中或者所述可执行程序所链接的共享库中均未定义,则生成用于提示该函数未定义的报错消息,并显示所述报错消息。
【技术特征摘要】
1.一种可执行程序中未定义函数的检测方法,其特征在于,所述方法包括:当检测到有共享库更新时,获取为可执行程序预先配置的依赖项中的共享库的更新时间点,并将最近的更新时间点作为所述依赖项的更新时间点;若所述可执行程序的更新时间点早于所述依赖项的更新时间点,则获取所述可执行程序所链接的共享库,并获取所述可执行程序对应的函数列表;针对所述函数列表中的每个函数,若该函数在所述可执行程序的源码中或者所述可执行程序所链接的共享库中均未定义,则生成用于提示该函数未定义的报错消息,并显示所述报错消息。2.根据权利要求1所述的方法,其特征在于,所述获取所述可执行程序所链接的共享库,包括:从所述可执行程序对应的配置文件中读取指定链接的第一共享库,并将所述第一共享库确定为所述可执行程序直接链接的共享库;从所述第一共享库对应的配置文件中读取指定链接的第二共享库,并将所述第二共享库确定为所述可执行程序间接链接的共享库;将所述直接链接的共享库和所述间接链接的共享库确定为所述可执行程序所链接的共享库。3.根据权利要求2所述的方法,其特征在于,为可执行程序配置依赖项,包括:读取所述可执行程序对应的编译命令的参数;对所述参数进行反向解析,并提取直接链接的共享库;将提取到的共享库添加到所述依赖项中。4.根据权利要求1所述的方法,其特征在于,所述函数列表中记录有所述可执行程序的源码中的函数、所链接的共享库中的函数。5.一种可执行程序中未定义函数的检测装置,其特...
【专利技术属性】
技术研发人员:符志清,
申请(专利权)人:杭州迪普科技股份有限公司,
类型:发明
国别省市:浙江,33
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。