CN109739506A - 一种高性能应用编译中库函数缺失的处理方法及系统 - Google Patents
一种高性能应用编译中库函数缺失的处理方法及系统 Download PDFInfo
- Publication number
- CN109739506A CN109739506A CN201811611807.3A CN201811611807A CN109739506A CN 109739506 A CN109739506 A CN 109739506A CN 201811611807 A CN201811611807 A CN 201811611807A CN 109739506 A CN109739506 A CN 109739506A
- Authority
- CN
- China
- Prior art keywords
- function
- missing
- library
- compiling
- performance application
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明实施例公开了一种高性能应用编译中库函数缺失的处理方法及系统,方法包括根据程序编译过程中的报错信息,筛选出缺失函数,并将所述缺失函数进行本地存储;遍历数学库中函数库文件包含的函数,并将所述函数与所述缺失函数进行匹配;根据匹配信息获取所述缺失函数对应的函数库文件;将所述缺失函数对应的函数库文件加入程序编译的库函数列表中。通过本发明所述的方法可以快速的查找到缺失的函数,并修正编译安装方法从而完善函数列表,使编译工作顺利进行,从而大大提高工作效率。
Description
技术领域
本发明涉及计算机编译技术领域,具体地说是一种高性能应用编译中库函数缺失的处理方法及系统。
背景技术
在高性能应用编译安装过程中不可避免的会调用各种库函数,这部分调试工作占据了高性能应用安装过程中大部分时间,严重影响了相关的工作效率。
虽然大部分应用提供了一些编译安装建议,但是往往由于系统变更,编译器兼容性不同等原因,大部分应用很难一次性就完成安装调试。其中由于库函数不匹配导致的编译异常是最常见的,处理相关问题往往需要数天的时间来解决。
目前对于该类问题的解决方法往往借助于网络上的相关经验,并没有系统的工具来解决相关问题。
发明内容
本发明实施例中提供了一种高性能应用编译中库函数缺失的处理方法及系统,以解决现有技术中库函数不匹配导致编译过程出错的问题。
为了解决上述技术问题,本发明实施例公开了如下技术方案:
本发明第一方面提供了一种高性能应用编译中库函数缺失的处理方法,包括以下步骤:
根据程序编译过程中的报错信息,筛选出缺失函数,并将所述缺失函数进行本地存储;
遍历数学库中函数库文件包含的函数,并将所述函数与所述缺失函数进行匹配;
根据匹配信息获取所述缺失函数对应的函数库文件;
将所述缺失函数对应的函数库文件加入程序编译的库函数列表中。
结合第一方面,在第一方面第一种可能的实现方式中,通过关键词匹配的方式,筛选出缺失函数。
结合第一方面,在第一方面第二种可能的实现方式中,将所述缺失函数进行本地存储的具体过程为:
建立本地函数库,将筛选出的缺失函数保存至所述本地函数库内。
结合第一方面,在第一方面第三种可能的实现方式中,所述将所述缺失函数对应的函数库文件加入程序编译的库函数列表中的具体过程为:
根据所述缺失函数对应的函数库文件,获取缺失函数的编译参数;
将所述编译参数添加到库函数列表中。
本发明第二方面提供了一种高性能应用编译中库函数缺失的处理系统,包括:
函数获取模块,根据程序编译过程中的报错信息,筛选出缺失函数;
存储模块,用于将所述缺失函数进行本地存储;
函数匹配模块,遍历数学库中函数库文件包含的函数,并将所述函数与所述缺失函数进行匹配;
函数列表生成模块,用于将所述缺失函数对应的函数库文件加入程序编译的库函数列表中。
结合第二方面,在第二方面第一种可能的实现方式中,所述存储模块为本地缓存,用于将所述缺失函数进行暂时存储。
结合第二方面,在第二方面第二种可能的实现方式中,所述函数列表生成模块包括:
参数获取单元,用于根据所述缺失函数对应的函数库文件,获取缺失函数的编译参数;
参数处理单元,用于将所述编译参数添加到库函数列表中。
本发明第二方面的所述高性能应用编译中库函数缺失的处理系统能够实现第一方面及第一方面的各实现方式中的方法,并取得相同的效果。
发明内容中提供的效果仅仅是实施例的效果,而不是发明所有的全部效果,上述技术方案中的一个技术方案具有如下优点或有益效果:
本发明实施例通过分析编译的错误信息,从错误信息中获取编译过程中的缺失函数,从数字库的函数库文件中匹配到该缺失函数中,并将该确实函数对应的数据库文件加入到库函数列表中。通过该方法可以快速的查找到缺失的函数,并修正编译安装方法从而完善函数列表,使编译工作顺利进行,从而大大提高工作效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明所述方法实施例的流程示意图;
图2是本发明所述系统实施例的结构示意图。
具体实施方式
为能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。
进行高性能应用编译安装中需要调用多个函数,这些被调用的函数往往存储在库函数中,编译过程中需要调用函数时,直接从库函数中获取即可。实际操作过程中由于系统变更、编译器兼容性的原因,往往出现库函数不匹配的问题。而每次编译完成后,均会对编译过程中的错误信息进行显示,本发明实施例通过利用该错误信息,将库函数进行完善,克服库函数中函数缺失导致不匹配的缺陷。
如图1所示,本发明的一种高性能应用编译中库函数缺失的处理方法,包括以下步骤:
S1,根据程序编译过程中的报错信息,筛选出缺失函数,并将所述缺失函数进行本地存储;
编译完成后,出现的错误信息,如下:
scala.f90:(.text+0x936):undefined reference to`blacs_gridmap_'
scala.f90:(.text+0x286):undefined reference to`blacs_gridinfo_'
scala.o:In function`scala_mp_procmap_':
scala.f90:(.text+0x73d):undefined reference to`blacs_gridinit_'
scala.f90:(.text+0x76c):undefined reference to`blacs_gridinfo_'
scala.f90:(.text+0x782):undefined reference to`blacs_pnum_'
scala.f90:(.text+0x912):undefined reference to`blacs_gridexit_'
scala.f90:(.text+0x936):undefined reference to`blacs_gridmap_';
通过关键字查询,筛选出错误信息中缺失的函数。如上例关键字可选用“undefined reference”提取出缺失函数为blacs_gridexit_,blacs_gridinfo_。
建立本地函数库,将提取出的缺失函数保存至本地函数库。
S2,遍历数学库中函数库文件包含的函数,并将所述函数与所述缺失函数进行匹配;
通过脚本nm命令遍历数学库中各函数库文件所包含的函数,将函数库文件中包含的函数与提取出的缺失函数进行匹配。
S3,根据匹配信息获取所述缺失函数对应的函数库文件;
S4,将所述缺失函数对应的函数库文件加入程序编译的库函数列表中。
根据匹配结果,找对缺失函数对应的函数库文件,获取缺失函数的编译参数;将所述编译参数添加到库函数列表中。
如上例,对于缺失函数blacs_gridexit_,遍历数学库时,得到该函数位于libmkl_blacs_intelmpi_lp64.a数学库中;获取到数学库编译参数BLAS=$(MKLROOT)/lib/intel64/libmkl_blacs_intelmpi_lp64.a。并将该编译参数用于程序编译中。
如图2所示,本发明还公开了一种高性能应用编译中库函数缺失的处理系统,包括函数获取模块1、存储模块2、函数匹配模块3和函数列表生成模块4。函数获取模块1根据程序表一过程中的报错信息,通过关键字筛选出缺失函数。存储模块2用于将筛选出的缺失函数进行本地存储,存储模块为本地缓存,缺失函数进行暂时存储,方便提取。函数匹配模块3用于遍历数学库中函数库文件包含的函数,并将函数库文件中包含的函数与筛选到的缺失函数进行匹配,得到缺失函数对应的函数库文件。函数列表生成模块4用于将缺失函数对应的函数库文件加入程序编译的库函数列表中。
函数列表生成模块4包括桉树获取单元41和参数处理单元42,参数获取单元41根据缺失函数对应的函数库文件,从函数库文件中获取缺失函数对应的编译参数。参数处理单元用于将编译参数添加到库函数列表中,将该编译参数用于程序编译中。
以上所述只是本发明的优选实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也被视为本发明的保护范围。
Claims (7)
1.一种高性能应用编译中库函数缺失的处理方法,其特征是,包括以下步骤:
根据程序编译过程中的报错信息,筛选出缺失函数,并将所述缺失函数进行本地存储;
遍历数学库中函数库文件包含的函数,并将所述函数与所述缺失函数进行匹配;
根据匹配信息获取所述缺失函数对应的函数库文件;
将所述缺失函数对应的函数库文件加入程序编译的库函数列表中。
2.根据权利要求1所述的一种高性能应用编译中库函数缺失的处理方法,其特征是,通过关键词匹配的方式,筛选出缺失函数。
3.根据权利要求1所述的一种高性能应用编译中库函数缺失的处理方法,其特征是,将所述缺失函数进行本地存储的具体过程为:
建立本地函数库,将筛选出的缺失函数保存至所述本地函数库内。
4.根据权利要求1所述的一种高性能应用编译中库函数缺失的处理方法,其特征是,所述将所述缺失函数对应的函数库文件加入程序编译的库函数列表中的具体过程为:
根据所述缺失函数对应的函数库文件,获取缺失函数的编译参数;
将所述编译参数添加到库函数列表中。
5.一种高性能应用编译中库函数缺失的处理系统,其特征是,包括:
函数获取模块,根据程序编译过程中的报错信息,筛选出缺失函数;
存储模块,用于将所述缺失函数进行本地存储;
函数匹配模块,用于遍历数学库中函数库文件包含的函数,并将所述函数与所述缺失函数进行匹配;
函数列表生成模块,用于将所述缺失函数对应的函数库文件加入程序编译的库函数列表中。
6.根据权利要求5所述的一种高性能应用编译中库函数缺失的处理系统,其特征是,所述存储模块为本地缓存,用于将所述缺失函数进行暂时存储。
7.根据权利要求5所述的一种高性能应用编译中库函数缺失的处理系统,其特征是,所述函数列表生成模块包括:
参数获取单元,用于根据所述缺失函数对应的函数库文件,获取缺失函数的编译参数;
参数处理单元,用于将所述编译参数添加到库函数列表中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811611807.3A CN109739506B (zh) | 2018-12-27 | 2018-12-27 | 一种高性能应用编译中库函数缺失的处理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811611807.3A CN109739506B (zh) | 2018-12-27 | 2018-12-27 | 一种高性能应用编译中库函数缺失的处理方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109739506A true CN109739506A (zh) | 2019-05-10 |
CN109739506B CN109739506B (zh) | 2022-02-18 |
Family
ID=66360186
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811611807.3A Active CN109739506B (zh) | 2018-12-27 | 2018-12-27 | 一种高性能应用编译中库函数缺失的处理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109739506B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1818863A (zh) * | 2006-03-13 | 2006-08-16 | 浙江大学 | 嵌入式软件反编译中的静态库函数识别实现方法 |
US20070011494A1 (en) * | 2005-06-21 | 2007-01-11 | International Business Machines Corporation | System and method for building software package for embedded system |
CN104050081A (zh) * | 2014-06-09 | 2014-09-17 | 汉柏科技有限公司 | 调试静态库函数的方法及系统 |
US20150033213A1 (en) * | 2013-07-26 | 2015-01-29 | Hitachi, Ltd. | Compiling method, storage medium and compiling apparatus |
CN107015841A (zh) * | 2017-03-31 | 2017-08-04 | 腾讯科技(深圳)有限公司 | 一种程序编译的预处理方法及程序编译设备 |
CN107643893A (zh) * | 2016-07-22 | 2018-01-30 | 腾讯科技(深圳)有限公司 | 一种程序检测方法及装置 |
CN107992307A (zh) * | 2017-12-11 | 2018-05-04 | 北京奇虎科技有限公司 | 一种函数编译方法及装置 |
US10114624B1 (en) * | 2017-10-12 | 2018-10-30 | Devfactory Fz-Llc | Blackbox matching engine |
-
2018
- 2018-12-27 CN CN201811611807.3A patent/CN109739506B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070011494A1 (en) * | 2005-06-21 | 2007-01-11 | International Business Machines Corporation | System and method for building software package for embedded system |
CN1818863A (zh) * | 2006-03-13 | 2006-08-16 | 浙江大学 | 嵌入式软件反编译中的静态库函数识别实现方法 |
US20150033213A1 (en) * | 2013-07-26 | 2015-01-29 | Hitachi, Ltd. | Compiling method, storage medium and compiling apparatus |
CN104050081A (zh) * | 2014-06-09 | 2014-09-17 | 汉柏科技有限公司 | 调试静态库函数的方法及系统 |
CN107643893A (zh) * | 2016-07-22 | 2018-01-30 | 腾讯科技(深圳)有限公司 | 一种程序检测方法及装置 |
CN107015841A (zh) * | 2017-03-31 | 2017-08-04 | 腾讯科技(深圳)有限公司 | 一种程序编译的预处理方法及程序编译设备 |
US10114624B1 (en) * | 2017-10-12 | 2018-10-30 | Devfactory Fz-Llc | Blackbox matching engine |
CN107992307A (zh) * | 2017-12-11 | 2018-05-04 | 北京奇虎科技有限公司 | 一种函数编译方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109739506B (zh) | 2022-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106909510B (zh) | 一种获取测试用例的方法以及服务器 | |
CN104331366A (zh) | 一种测试用例设计效率提升方法及系统 | |
CN112416806B (zh) | 一种基于标准文档分析的js引擎模糊测试方法 | |
CN111104317A (zh) | 一种实现测试用例高效编辑和执行管理的方法 | |
CN103559025B (zh) | 一种采用聚类方式进行软件重构的方法 | |
CN107016019B (zh) | 数据库索引创建方法及装置 | |
CN106469049A (zh) | 一种文件扫描的方法及装置 | |
CN103544298B (zh) | 组件的日志分析方法和分析装置 | |
CN107247811A (zh) | 基于Oracle数据库的SQL语句性能优化方法及装置 | |
CN108052453A (zh) | 可编程逻辑控制器程序的测试方法、装置、设备和介质 | |
Nichols | Augmented bug localization using past bug information | |
CN110737594A (zh) | 自动生成测试用例的数据库标准符合性测试方法及装置 | |
WO2006136055A1 (fr) | Procédé d'exploration de données texte | |
CN104391793A (zh) | 测试步骤及测试脚本生成方法及装置 | |
CN110334001A (zh) | 一种批量自动生成回声测试的方法和装置 | |
CN108897678B (zh) | 静态代码检测方法和静态代码检测系统、存储设备 | |
CN111694738B (zh) | 一种sql测试脚本的生成方法 | |
CN117971706A (zh) | 一种GBase数据库模糊测试用例生成方法及装置 | |
CN100346308C (zh) | 一种基于数据库操作的自动化测试方法 | |
CN109062816A (zh) | 一种软件测试的方法、装置及设备 | |
CN103593182A (zh) | 一种采用聚类方式进行软件重构的方法 | |
CN112463816A (zh) | 基于api的查询系统及方法 | |
CN109739506A (zh) | 一种高性能应用编译中库函数缺失的处理方法及系统 | |
CN110895529B (zh) | 结构化查询语言的处理方法及相关装置 | |
CN106681910B (zh) | 一种基于主机代码解析生成测试案例的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |