[发明专利]具有多个版本的共享库的处理方法和装置在审
| 申请号: | 202110124671.9 | 申请日: | 2021-01-29 |
| 公开(公告)号: | CN112947987A | 公开(公告)日: | 2021-06-11 |
| 发明(设计)人: | 黄俊杰 | 申请(专利权)人: | 视若飞信息科技(上海)有限公司 |
| 主分类号: | G06F8/71 | 分类号: | G06F8/71;G06F8/41 |
| 代理公司: | 上海领誉知识产权代理有限公司 31383 | 代理人: | 车超平;王琰 |
| 地址: | 200433 上海市杨*** | 国省代码: | 上海;31 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 具有 版本 共享 处理 方法 装置 | ||
本申请涉及一种具有多个版本的共享库的处理方法和装置,该方法包括:在可执行文件同时链接第一共享库的多个版本时,对第一共享库的每个版本执行:步骤S1,获取目标版本共享库对应的目标符号替换表,目标版本共享库为第一共享库的其中一个版本,目标符号替换表存储有目标版本共享库的原始符号及其相对应的替换符号;步骤S2,对目标版本共享库中的原始符号进行符号替换,生成包含替换符号的目标版本共享库。通过本申请,解决了相关技术中当不同版本、且不兼容的共享库被同一个程序的不同模块所依赖时,最终会出现符号冲突的问题,实现了在不修改程序源码的情况下,让共享库的多个版本能够和平地共存。
技术领域
本申请涉及计算机领域,特别是涉及具有多个版本的共享库的处理方法、装置、计算机设备和计算机可读存储介质。
背景技术
Linux平台有动态库(也称为共享库)和静态库这两种不同形态的程序库。静态库是一些代码和数据的结合,在编译期间会被链接到程序当中。共享库则可作为独立的实体存在,在程序启动的时候被加载,可被不同的程序所共享。
当不同版本、且不兼容的共享库被同一个程序的不同模块所依赖时,最终会出现符号冲突的情况。
如图1所示,可执行文件a.out动态链接了共享库libB.so(简称为B)和共享库libC.so(简称为C),B和C又分别依赖共享库D的两个版本D_v1和D_v2。
由于D_v1和D_v2是同一个共享库的两个版本,它们的大多数符号都是相同的。为了避免运行时的符号冲突,现有的技术提供了以下两种解决方案:
方案1:如图2所示,将共享库D做成静态库,共享库libB.so和libC.so分别静态链接共享库D的不同版本libD_v1.a和libD_v2.a,并将共享库D中的符号对外隐藏。
方案2:如图3所示,共享库libB.so和libC.so不是直接动态链接共享库D的两个版本,而是采用动态加载(dlopen)的方式来分别使用共享库libD_v1.so和libD_v2.so。
针对上述两种方案,存在以下缺陷:
方案1所采用的静态链接的方式,生成的可执行文件体积较大,包含相同的公共代码,造成浪费,不同的程序无法共享完全相同的代码。
方案2所采用的动态加载(dlopen)的方式,需要结合dlsym动态查找共享库D中的符号。并且将动态链接修改为动态加载,需要修改外部调用模块(如图3中的共享库libB.so和libC.so)的源码。当外部使用的共享库D中的符号太多时,会显著增加编码复杂度,并且影响程序的执行效率。
目前针对相关技术中当不同版本、且不兼容的共享库被同一个程序的不同模块所依赖时,最终会出现符号冲突的情况,尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种具有多个版本的共享库的处理方法、装置、计算机设备和计算机可读存储介质,以至少解决相关技术中当不同版本、且不兼容的共享库被同一个程序的不同模块所依赖时,最终会出现符号冲突的问题。
第一方面,本申请实施例提供了一种具有多个版本的共享库的处理方法,包括:
在可执行文件同时链接第一共享库的多个版本时,对所述第一共享库的每个版本执行以下步骤:
步骤S1,获取目标版本共享库对应的目标符号替换表,其中,所述目标版本共享库为所述第一共享库的其中一个版本,所述目标符号替换表存储有所述目标版本共享库的原始符号、以及与所述原始符号相对应的替换符号,所述替换符号为在所述原始符号的基础上添加用于指示所述目标版本共享库的版本的标识后所得到的符号;
步骤S2,根据所述目标符号替换表,对所述目标版本共享库中的所述原始符号进行符号替换,生成包含所述替换符号的目标版本共享库。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于视若飞信息科技(上海)有限公司,未经视若飞信息科技(上海)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110124671.9/2.html,转载请声明来源钻瓜专利网。





