CN118193032A - 消除无效依赖库的方法、装置、设备、介质和程序产品 - Google Patents
消除无效依赖库的方法、装置、设备、介质和程序产品 Download PDFInfo
- Publication number
- CN118193032A CN118193032A CN202410345280.3A CN202410345280A CN118193032A CN 118193032 A CN118193032 A CN 118193032A CN 202410345280 A CN202410345280 A CN 202410345280A CN 118193032 A CN118193032 A CN 118193032A
- Authority
- CN
- China
- Prior art keywords
- target
- symbol
- library
- symbol set
- executable
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 52
- 238000004590 computer program Methods 0.000 claims abstract description 26
- 230000008676 import Effects 0.000 claims abstract description 22
- 230000006870 function Effects 0.000 claims description 51
- 230000004048 modification Effects 0.000 claims description 51
- 238000012986 modification Methods 0.000 claims description 51
- 230000001419 dependent effect Effects 0.000 claims description 14
- 238000012545 processing Methods 0.000 claims description 7
- 238000012216 screening Methods 0.000 claims description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000009434 installation Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Stored Programmes (AREA)
Abstract
本申请涉及一种消除无效依赖库的方法、装置、计算机设备、存储介质和计算机程序产品,涉及计算机技术领域。本申请能够在无需修改源码且无需重编译的情况下,消除共享库不必要的外部依赖共享库,提出了一种普适性较高的消除无效依赖库的方案。该方法包括:获取待消除的无效依赖库对应的导出符号集合,以及可执行和可链接格式文件对应的导入符号集合;根据导出符号集合和导入符号集合,得到目标集合;目标集合为导出符号集合和导入符号集合的交集;将目标集合中的符号重写为目标符号,并将目标符号导入预设的标准函数库;修改目标集合中可执行和可链接格式文件的目标属性,以使待消除的无效依赖库从标准函数库中移除。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种消除无效依赖库的方法、装置、计算机设备、存储介质和计算机程序产品。
背景技术
随着计算机开源技术的发展,ELF(Executable and Linkable Format,可执行和可链接格式)文件中可能会包含从未被内外部使用或不再被内外部使用的废弃函数,这些废弃函数由外部共享库提供且这些外部共享库的所有导出函数不被ELF文件的其他有效函数所调用,则这些外部共享库可视为无效依赖库。
传统技术中,主要通过在 ELF文件的源码中,删除指定依赖库所涉及的函数并重编译ELF文件的方法来消除ELF文件指定的无效依赖库。
然而,若要修改并重编译ELF文件的源码,则需首先获取其源码;在ELF文件为闭源软件的情况下,上述方法便无法实施,因此存在普适性较低的缺陷。
发明内容
基于此,有必要针对上述技术问题,提供一种消除无效依赖库的方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
第一方面,本申请提供了一种消除无效依赖库的方法。所述方法包括:
获取待消除的无效依赖库对应的导出符号集合,以及可执行和可链接格式文件对应的导入符号集合;
根据所述导出符号集合和导入符号集合,得到目标集合;所述目标集合为所述导出符号集合和导入符号集合的交集;
将所述目标集合中的符号重写为目标符号,并将所述目标符号导入预设的标准函数库;
修改所述目标集合中可执行和可链接格式文件的目标属性,以使所述待消除的无效依赖库从所述标准函数库中移除。
在其中一个实施例中,所述获取待消除的无效依赖库对应的导出符号集合,以及可执行和可链接格式文件对应的导入符号集合,包括:
获取所述待消除的无效依赖库对应的第一符号表,以及所述可执行和可链接格式文件对应的第二符号表;遍历所述第一符号表,识别出所述第一符号表中的导出符号,得到所述导出符号集合;遍历所述第二符号表,识别出所述第二符号表中的导入符号,得到所述导入符号集合。
在其中一个实施例中,所述根据所述导出符号集合和导入符号集合,得到目标集合,包括:
对所述导出符号集合和导入符号集合进行排序比较;筛选出同时属于所述导出符号集合和导入符号集合的共有符号;根据所述共有符号,得到所述目标集合。
在其中一个实施例中,在修改所述目标集合中可执行和可链接格式文件的目标属性之前,还包括:
获取预设的命令行工具和所述命令行工具对应的修改命令和参数;根据所述修改命令和参数,确定待修改的目标属性和所述目标属性的修改方式;
所述修改所述目标集合中可执行和可链接格式文件的目标属性,包括:
利用所述命令行工具,根据所述修改命令和参数,对所述目标集合中可执行和可链接格式文件的目标属性进行修改。
在其中一个实施例中,所述根据所述修改命令和参数,确定待修改的目标属性和所述目标属性的修改方式,包括:
根据所述修改命令和参数,将所述可执行和可链接格式文件的依赖项属性作为所述目标属性;确定所述依赖项属性的修改方式为删除共享库依赖。
在其中一个实施例中,所述方法还包括:
在所述待消除的无效依赖库从所述标准函数库中成功移除的情况下,根据已消除的无效依赖库,生成成功移除提示信息;根据所述成功移除提示信息,对所述已消除的无效依赖库的历史操作记录进行更新。
第二方面,本申请还提供了一种消除无效依赖库的装置。所述装置包括:
集合获取模块,用于获取待消除的无效依赖库对应的导出符号集合,以及可执行和可链接格式文件对应的导入符号集合;
集合处理模块,用于根据所述导出符号集合和导入符号集合,得到目标集合;所述目标集合为所述导出符号集合和导入符号集合的交集;
符号重写模块,用于将所述目标集合中的符号重写为目标符号,并将所述目标符号导入预设的标准函数库;
属性修改模块,用于修改所述目标集合中可执行和可链接格式文件的目标属性,以使所述待消除的无效依赖库从所述标准函数库中移除。
第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取待消除的无效依赖库对应的导出符号集合,以及可执行和可链接格式文件对应的导入符号集合;根据所述导出符号集合和导入符号集合,得到目标集合;所述目标集合为所述导出符号集合和导入符号集合的交集;将所述目标集合中的符号重写为目标符号,并将所述目标符号导入预设的标准函数库;修改所述目标集合中可执行和可链接格式文件的目标属性,以使所述待消除的无效依赖库从所述标准函数库中移除。
第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取待消除的无效依赖库对应的导出符号集合,以及可执行和可链接格式文件对应的导入符号集合;根据所述导出符号集合和导入符号集合,得到目标集合;所述目标集合为所述导出符号集合和导入符号集合的交集;将所述目标集合中的符号重写为目标符号,并将所述目标符号导入预设的标准函数库;修改所述目标集合中可执行和可链接格式文件的目标属性,以使所述待消除的无效依赖库从所述标准函数库中移除。
第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
获取待消除的无效依赖库对应的导出符号集合,以及可执行和可链接格式文件对应的导入符号集合;根据所述导出符号集合和导入符号集合,得到目标集合;所述目标集合为所述导出符号集合和导入符号集合的交集;将所述目标集合中的符号重写为目标符号,并将所述目标符号导入预设的标准函数库;修改所述目标集合中可执行和可链接格式文件的目标属性,以使所述待消除的无效依赖库从所述标准函数库中移除。
上述消除无效依赖库的方法、装置、计算机设备、存储介质和计算机程序产品,通过获取待消除的无效依赖库对应的导出符号集合,以及可执行和可链接格式文件对应的导入符号集合;根据导出符号集合和导入符号集合,得到目标集合;目标集合为导出符号集合和导入符号集合的交集;将目标集合中的符号重写为目标符号,并将目标符号导入预设的标准函数库;修改目标集合中可执行和可链接格式文件的目标属性,以使待消除的无效依赖库从标准函数库中移除。本方案可以在无需修改源码且无需重编译的情况下,消除共享库不必要的外部依赖共享库,避免了获取ELF文件源码的前提过程,由此提出一种普适性较高的消除无效依赖库的方案;此外,使用该方案还可以降低可执行程序或共享库依赖共享库的数量,从而降低安装包(包含可执行程序和它递归依赖的所有共享库)的大小,并提高用户使用体验。
附图说明
图1为一个实施例中消除无效依赖库的方法的应用环境图;
图2为一个实施例中消除无效依赖库的方法的流程示意图;
图3为一个实施例中获取符号集合步骤的流程示意图;
图4为一个实施例中获取目标集合步骤的流程示意图;
图5为一个具体实施例中消除无效依赖库的方法的流程示意图;
图6为一个实施例中消除无效依赖库的装置的结构框图;
图7为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的消除无效依赖库的方法,可以应用于如图1所示的应用环境中。其中,终端通过网络与服务器进行通信。数据存储***可以存储服务器需要处理的数据。数据存储***可以集成在服务器上,也可以放在云上或其他网络服务器上。
具体地,本申请实施例提供的消除无效依赖库的方法,可以由服务器执行。
示例性的,服务器获取待消除的无效依赖库对应的导出符号集合,以及可执行和可链接格式文件对应的导入符号集合;根据导出符号集合和导入符号集合,得到目标集合;服务器将目标集合中的符号重写为目标符号,并将目标符号导入预设的标准函数库;修改目标集合中可执行和可链接格式文件的目标属性,以使待消除的无效依赖库从标准函数库中移除。
在如图1所示的应用环境中,终端可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑。服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种消除无效依赖库的方法,以该方法应用于图1中的服务器为例进行说明,包括以下步骤:
步骤S201,获取待消除的无效依赖库对应的导出符号集合,以及可执行和可链接格式文件对应的导入符号集合。
其中,无效依赖库可以是在软件项目中引入的不正确或不可用的依赖库。
其中,导出符号是指共享库提供给可执行程序或其他共享库调用的函数或变量。
其中,导入符号是指可执行程序或共享库调用其他共享库提供的函数或变量。
其中,可执行和可链接格式是一种常见的二进制文件格式,主要用于在UNIX、Linux等操作***上存储可执行程序、共享库以及对象文件;ELF 格式的文件通常包含程序的指令、数据、符号表、重定位信息等内容,使得操作***能够加载和执行这些程序。
具体地,服务器获取待消除的无效依赖库对应的导出符号集合,以及可执行和可链接格式文件对应的导入符号集合。
步骤S202,根据导出符号集合和导入符号集合,得到目标集合;目标集合为导出符号集合和导入符号集合的交集。
具体地,服务器筛选出同时属于导出符号集合和导入符号集合的共有符号;根据共有符号,得到目标集合。
步骤S203,将目标集合中的符号重写为目标符号,并将目标符号导入预设的标准函数库。
其中,目标符号可以是exit()函数对应的符号;exit()函数用于终止程序的执行,并将控制权返回给操作***。
其中,标准函数库可以是glibc(GNU C Library,GNU C库),一种Linux ***中最常用的 C 库,它提供了许多标准 C 库函数和***调用的实现,其中之一就是exit()函数。
具体地,服务器将目标集合中的符号重写为预设函数对应的目标符号,并将目标符号导入预设的标准函数库。
步骤S204,修改目标集合中可执行和可链接格式文件的目标属性,以使待消除的无效依赖库从标准函数库中移除。
其中,目标属性是指可执行和可链接格式文件的依赖项;可以修改可执行文件或共享库的动态链接器依赖项,比如增加或删除特定的共享库依赖。
具体地,服务器利用命令行工具,根据修改命令和参数,对目标集合中可执行和可链接格式文件的目标属性进行修改,以使待消除的无效依赖库从标准函数库中移除。
上述消除无效依赖库的方法中,通过获取待消除的无效依赖库对应的导出符号集合,以及可执行和可链接格式文件对应的导入符号集合;根据导出符号集合和导入符号集合,得到目标集合;目标集合为导出符号集合和导入符号集合的交集;将目标集合中的符号重写为目标符号,并将目标符号导入预设的标准函数库;修改目标集合中可执行和可链接格式文件的目标属性,以使待消除的无效依赖库从标准函数库中移除。本方案可以在无需修改源码且无需重编译的情况下,消除共享库不必要的外部依赖共享库,避免了获取ELF文件源码的前提过程,由此提出一种普适性较高的消除无效依赖库的方案;此外,使用该方案还可以降低可执行程序或共享库依赖共享库的数量,从而降低安装包(包含可执行程序和它递归依赖的所有共享库)的大小,并提高用户使用体验。
在其中一个实施例中,如图3所示,上述步骤S201中,获取待消除的无效依赖库对应的导出符号集合,以及可执行和可链接格式文件对应的导入符号集合,具体包括如下步骤:
步骤S301,获取待消除的无效依赖库对应的第一符号表,以及可执行和可链接格式文件对应的第二符号表。
步骤S302,遍历第一符号表,识别出第一符号表中的导出符号,得到导出符号集合。
步骤S303,遍历第二符号表,识别出第二符号表中的导入符号,得到导入符号集合。
其中,符号表是指在计算机科学和软件工程中用于跟踪程序中定义的各种符号(如变量、函数、类等)及其相关信息的数据结构;一般来说,符号表包含了程序中定义的各种符号的信息,包括符号名称、类型信息、作用域、存储位置以及其他属性。
具体地,服务器使用命令nm分别获取待消除的无效依赖库对应的第一符号表,以及可执行和可链接格式文件对应的第二符号表;遍历第一符号表,识别出第一符号表中的导出符号,得到导出符号集合;遍历第二符号表,识别出第二符号表中的导入符号,得到导入符号集合。
解释说明,nm是一个常用的命令行工具,通常在类Unix***上使用,它的作用是列出目标文件、可执行文件或共享库中的符号表信息;通过nm命令,你可以查看一个二进制文件中定义的各种符号,包括函数、变量以及其他符号的地址、类型等信息。
本实施例中,通过遍历第一符号表和第二符号表,从中分别筛选得到导出符号和导入符号,从而高效准确地得到导出符号集和导入符号集。
在其中一个实施例中,如图4所示,上述步骤S202中,根据导出符号集合和导入符号集合,得到目标集合,具体包括如下步骤:
步骤S401,对导出符号集合和导入符号集合进行排序比较。
步骤S402,筛选出同时属于导出符号集合和导入符号集合的共有符号。
步骤S403,根据共有符号,得到目标集合。
其中,目标集合为导出符号集合和导入符号集合的交集,其中包含了导出符号集合和导入符号集合的共有元素。
具体地,服务器对导出符号集合和导入符号集合进行排序比较;筛选出同时属于导出符号集合和导入符号集合的共有符号;对多个共有符号进行汇总,得到目标集合。
本实施例中,通过筛选出同时属于导出符号集合和导入符号集合的共有符号,再对共有符号进行汇总,从而准确有序地得到目标集合。
在其中一个实施例中,在修改目标集合中可执行和可链接格式文件的目标属性之前,还包括如下步骤:
获取预设的命令行工具和命令行工具对应的修改命令和参数;根据修改命令和参数,确定待修改的目标属性和目标属性的修改方式;
上述步骤S204中,修改目标集合中可执行和可链接格式文件的目标属性,具体包括如下步骤:
利用命令行工具,根据修改命令和参数,对目标集合中可执行和可链接格式文件的目标属性进行修改。
其中,命令行工具是一种在命令行界面下运行的软件程序,其通过输入命令和参数来执行特定的任务或操作;在本实施例中,预设的命令行工具可以是用于修改 ELF 可执行文件属性的命令行工具,如patchelf。
其中,可执行和可链接格式文件的属性包括但不限于动态链接、动态链接库路径、运行时链接路径和依赖项等。
具体地,服务器获取预设的命令行工具和命令行工具对应的修改命令和参数;根据修改命令和参数,确定待修改的目标属性和目标属性的修改方式;利用命令行工具,根据修改命令和参数,对目标集合中可执行和可链接格式文件的目标属性进行修改。
本实施例中,通过利用命令行工具,根据修改命令和参数,对目标集合中可执行和可链接格式文件的目标属性进行修改;从而准确地将待消除的无效依赖库从标准函数库中移除,有效地消除共享库不必要的外部依赖共享库。
在其中一个实施例中,根据修改命令和参数,确定待修改的目标属性和目标属性的修改方式,具体包括如下步骤:
根据修改命令和参数,将可执行和可链接格式文件的依赖项属性作为目标属性;确定依赖项属性的修改方式为删除共享库依赖。
举例说明,使用 patchelf 工具可以修改可执行文件或共享库的动态链接器依赖项,比如增加或删除特定的共享库依赖。
具体地,服务器根据修改命令和参数,将可执行和可链接格式文件的依赖项属性作为目标属性;并确定依赖项属性的修改方式为删除共享库依赖。
本实施例中,通过将可执行和可链接格式文件的依赖项属性作为目标属性,确定依赖项属性的修改方式为删除共享库依赖;从而可以在无需修改源码且无需重编译的情况下,消除共享库不必要的外部依赖共享库。
在其中一个实施例中,还包括如下步骤:
在待消除的无效依赖库从标准函数库中成功移除的情况下,根据已消除的无效依赖库,生成成功移除提示信息;根据成功移除提示信息,对已消除的无效依赖库的历史操作记录进行更新。
具体地,服务器在识别到待消除的无效依赖库从标准函数库中成功移除的情况下,根据已消除的无效依赖库,生成成功移除提示信息,并对已消除的无效依赖库的历史操作记录进行更新。
本实施例中,通过生成成功移除提示信息,根据成功移除提示信息,对已消除的无效依赖库的历史操作记录进行更新;从而实现了对共享库历史操作记录的高效存储功能,便于相关工作人员对操作记录进行后续分析和利用。
在一个实施例中,如图5所示,提供了一个具体实施例中消除无效依赖库的方法,具体包括以下步骤:
步骤S501,获取待消除的无效依赖库对应的第一符号表,以及可执行和可链接格式文件对应的第二符号表;遍历第一符号表,识别出第一符号表中的导出符号,得到导出符号集合;遍历第二符号表,识别出第二符号表中的导入符号,得到导入符号集合。
步骤S502,对导出符号集合和导入符号集合进行排序比较;筛选出同时属于导出符号集合和导入符号集合的共有符号;根据共有符号,得到目标集合。
步骤S503,将目标集合中的符号重写为目标符号,并将目标符号导入预设的标准函数库。
步骤S504,获取预设的命令行工具和命令行工具对应的修改命令和参数;根据修改命令和参数,将可执行和可链接格式文件的依赖项属性作为目标属性;确定依赖项属性的修改方式为删除共享库依赖。
步骤S505,利用命令行工具,根据修改命令和参数,对目标集合中可执行和可链接格式文件的目标属性进行修改,以使待消除的无效依赖库从标准函数库中移除。
步骤S506,在待消除的无效依赖库从标准函数库中成功移除的情况下,根据已消除的无效依赖库,生成成功移除提示信息;根据成功移除提示信息,对已消除的无效依赖库的历史操作记录进行更新。
通过上述消除无效依赖库的方法,可以在无需修改源码且无需重编译的情况下,消除共享库不必要的外部依赖共享库,避免了获取ELF文件源码的前提过程,由此提出一种普适性较高的消除无效依赖库的方案;此外,使用该方案还可以降低可执行程序或共享库依赖共享库的数量,从而降低安装包(包含可执行程序和它递归依赖的所有共享库)的大小,并提高用户使用体验。
为了更清晰阐明本申请实施例提供的消除无效依赖库的方法,以下以一个具体的实施例对该消除无效依赖库的方法进行具体说明。在一个实施例中,提供了一个应用实施例中消除无效依赖库的方法,具体包括以下步骤:
步骤一:使用命令nm获取待消除的无效依赖库的导出符号集合E,并用命令sort排序存于文件E.syms。
步骤二:使用命令nm获取ELF的导入符号集合I,并用命令sort排序存于文件I.syms。
步骤三:使用命令comm 求集合E和I的交集 R,并存于文件R.syms。
步骤四:使用Python库LIEF重写集合 R 中符号至glibc库函数exit()。
步骤五:使用patchelf移除待消除的无效依赖库于ELF中。
上述实施例带来的有益效果如下:
1)可以在无需修改源码且无需重编译的情况下,消除共享库不必要的外部依赖共享库。
2)当执行程序启动时,加载器将加载其依赖的共享库和共享库递归依赖的共享库至内存;减少依赖库,将提高可执行程序启动速度,并提高用户使用体验。
3)可执行程序或共享库依赖共享库的数量,从而降低安装包(包含可执行程序和它递归依赖的所有共享库)大小以及可执行程序的运行内存大小。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的消除无效依赖库的方法的消除无效依赖库的装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个消除无效依赖库的装置实施例中的具体限定可以参见上文中对于消除无效依赖库的方法的限定,在此不再赘述。
在一个实施例中,如图6所示,提供了一种消除无效依赖库的装置,包括:
集合获取模块601,用于获取待消除的无效依赖库对应的导出符号集合,以及可执行和可链接格式文件对应的导入符号集合;
集合处理模块602,用于根据导出符号集合和导入符号集合,得到目标集合;目标集合为导出符号集合和导入符号集合的交集;
符号重写模块603,用于将目标集合中的符号重写为目标符号,并将目标符号导入预设的标准函数库;
属性修改模块604,用于修改目标集合中可执行和可链接格式文件的目标属性,以使待消除的无效依赖库从标准函数库中移除。
在一个实施例中,集合获取模块601,还用于获取待消除的无效依赖库对应的第一符号表,以及可执行和可链接格式文件对应的第二符号表;遍历第一符号表,识别出第一符号表中的导出符号,得到导出符号集合;遍历第二符号表,识别出第二符号表中的导入符号,得到导入符号集合。
在一个实施例中,集合处理模块602,还用于对导出符号集合和导入符号集合进行排序比较;筛选出同时属于导出符号集合和导入符号集合的共有符号;根据共有符号,得到目标集合。
在一个实施例中,消除无效依赖库的装置还包括修改准备模块,用于获取预设的命令行工具和命令行工具对应的修改命令和参数;根据修改命令和参数,确定待修改的目标属性和目标属性的修改方式;
属性修改模块604,还用于利用命令行工具,根据修改命令和参数,对目标集合中可执行和可链接格式文件的目标属性进行修改。
在一个实施例中,修改准备模块,还用于根据修改命令和参数,将可执行和可链接格式文件的依赖项属性作为目标属性;确定依赖项属性的修改方式为删除共享库依赖。
在一个实施例中,消除无效依赖库的装置还包括记录更新模块,用于在待消除的无效依赖库从标准函数库中成功移除的情况下,根据已消除的无效依赖库,生成成功移除提示信息;根据成功移除提示信息,对已消除的无效依赖库的历史操作记录进行更新。
上述消除无效依赖库的装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图7所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过***总线连接,通信接口通过输入/输出接口连接到***总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作***、计算机程序和数据库。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的数据库用于存储动态符合等数据。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种消除无效依赖库的方法。
本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (10)
1.一种消除无效依赖库的方法,其特征在于,所述方法包括:
获取待消除的无效依赖库对应的导出符号集合,以及可执行和可链接格式文件对应的导入符号集合;
根据所述导出符号集合和导入符号集合,得到目标集合;所述目标集合为所述导出符号集合和导入符号集合的交集;
将所述目标集合中的符号重写为目标符号,并将所述目标符号导入预设的标准函数库;
修改所述目标集合中可执行和可链接格式文件的目标属性,以使所述待消除的无效依赖库从所述标准函数库中移除。
2.根据权利要求1所述的方法,其特征在于,所述获取待消除的无效依赖库对应的导出符号集合,以及可执行和可链接格式文件对应的导入符号集合,包括:
获取所述待消除的无效依赖库对应的第一符号表,以及所述可执行和可链接格式文件对应的第二符号表;
遍历所述第一符号表,识别出所述第一符号表中的导出符号,得到所述导出符号集合;
遍历所述第二符号表,识别出所述第二符号表中的导入符号,得到所述导入符号集合。
3.根据权利要求2所述的方法,其特征在于,所述根据所述导出符号集合和导入符号集合,得到目标集合,包括:
对所述导出符号集合和导入符号集合进行排序比较;
筛选出同时属于所述导出符号集合和导入符号集合的共有符号;
根据所述共有符号,得到所述目标集合。
4.根据权利要求1所述的方法,其特征在于,在修改所述目标集合中可执行和可链接格式文件的目标属性之前,还包括:
获取预设的命令行工具和所述命令行工具对应的修改命令和参数;
根据所述修改命令和参数,确定待修改的目标属性和所述目标属性的修改方式;
所述修改所述目标集合中可执行和可链接格式文件的目标属性,包括:
利用所述命令行工具,根据所述修改命令和参数,对所述目标集合中可执行和可链接格式文件的目标属性进行修改。
5.根据权利要求4所述的方法,其特征在于,所述根据所述修改命令和参数,确定待修改的目标属性和所述目标属性的修改方式,包括:
根据所述修改命令和参数,将所述可执行和可链接格式文件的依赖项属性作为所述目标属性;
确定所述依赖项属性的修改方式为删除共享库依赖。
6.根据权利要求1至5任意一项所述的方法,其特征在于,所述方法还包括:
在所述待消除的无效依赖库从所述标准函数库中成功移除的情况下,根据已消除的无效依赖库,生成成功移除提示信息;
根据所述成功移除提示信息,对所述已消除的无效依赖库的历史操作记录进行更新。
7.一种消除无效依赖库的装置,其特征在于,所述装置包括:
集合获取模块,用于获取待消除的无效依赖库对应的导出符号集合,以及可执行和可链接格式文件对应的导入符号集合;
集合处理模块,用于根据所述导出符号集合和导入符号集合,得到目标集合;所述目标集合为所述导出符号集合和导入符号集合的交集;
符号重写模块,用于将所述目标集合中的符号重写为目标符号,并将所述目标符号导入预设的标准函数库;
属性修改模块,用于修改所述目标集合中可执行和可链接格式文件的目标属性,以使所述待消除的无效依赖库从所述标准函数库中移除。
8.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述的方法的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
10.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410345280.3A CN118193032A (zh) | 2024-03-25 | 2024-03-25 | 消除无效依赖库的方法、装置、设备、介质和程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410345280.3A CN118193032A (zh) | 2024-03-25 | 2024-03-25 | 消除无效依赖库的方法、装置、设备、介质和程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118193032A true CN118193032A (zh) | 2024-06-14 |
Family
ID=91397969
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410345280.3A Pending CN118193032A (zh) | 2024-03-25 | 2024-03-25 | 消除无效依赖库的方法、装置、设备、介质和程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118193032A (zh) |
-
2024
- 2024-03-25 CN CN202410345280.3A patent/CN118193032A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220342875A1 (en) | Data preparation context navigation | |
US10394694B2 (en) | Unexplored branch search in hybrid fuzz testing of software binaries | |
CN111124872A (zh) | 基于差异代码分析的分支检测方法、装置及存储介质 | |
CN117033424A (zh) | 慢sql语句的查询优化方法、装置和计算机设备 | |
WO2024078122A1 (zh) | 数据库表扫描的方法、装置以及设备 | |
CN118193032A (zh) | 消除无效依赖库的方法、装置、设备、介质和程序产品 | |
CN115309811A (zh) | Etl脚本生成方法、装置、存储介质和设备 | |
CN114791865A (zh) | 一种基于关系图的配置项自洽性检测方法、***和介质 | |
CN114489481A (zh) | 硬盘存储数据并访问的方法及*** | |
CN112559331A (zh) | 测试方法和装置 | |
CN111158701B (zh) | 库模块发布方法、装置、设备及存储介质 | |
CN117931755B (zh) | 批量导入封装库的方法、装置、设备和介质 | |
US12032589B2 (en) | Bypassing database automations | |
CN111752571B (zh) | 程序升级方法、装置、设备及存储介质 | |
US11487467B1 (en) | Layered memory mapped file technology | |
CN115292348A (zh) | 一种数据库处理方法、***、电子设备及存储介质 | |
CN117112424A (zh) | 测试用例的生成方法、装置、设备、介质和产品 | |
CN116049289A (zh) | 一种文件入库的方法及装置 | |
CN117407411A (zh) | 数据库语句的执行方法、装置 | |
CN116880927A (zh) | 规则管理方法、装置、计算机设备和存储介质 | |
CN114201487A (zh) | 智能合约的存储装置和方法 | |
CN117667521A (zh) | 数据备份方法、装置、设备及计算机可读存储介质 | |
CN117370160A (zh) | 代码审核方法、装置、计算机设备、存储介质和程序产品 | |
CN113296779A (zh) | 代码信息处理***、方法、装置以及电子设备 | |
CN114036171A (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 |