本技术涉及计算机技术的领域,尤其涉及一种国产操作系统环境下动态库兼容方法及装置。
背景技术:
1、随着国产操作系统的快速发展、大版本迭代升级已经成为常态,以适应不断变化的安全需求、性能标准和技术创新,其核心组件之一——动态链接库(dynamic library)也会经历相应的版本更迭。其中,soname作为动态库的唯一标识符,用于在运行时确定库的版本和位置。然而,当操作系统升级导致soname发生变更时,由于应用软件在老操作系统上编译链接时使用的是旧的动态库soname,当这些应用软件被移植到新操作系统时,可能因无法找到与之匹配的旧版soname而导致运行失败。这一现象严重阻碍了国产操作系统的平滑升级和已有应用生态的无缝迁移,这不仅影响了用户的正常使用,也增加了软件开发和维护的复杂度。
2、目前应对动态库soname不兼容问题的策略主要有:
3、应用软件重编译:传统的做法通常是要求应用软件开发者针对新操作系统重新编译链接,以适配新的动态库soname。然而,这种做法既耗时又耗力,且对于大量的应用软件来说,实施起来非常困难,这种方法对于大量已停止维护或难以获取源代码的老旧应用来说并不适用,且增加了开发者的维护负担。此外,即使重新编译链接,也可能因为新操作系统与老操作系统在api层面的差异,导致应用软件无法正常运行。
4、应用软件静态连接库:应用软件在老版本将所有外部库进行静态库链接。然而,静态库会增加应用软件的大小,而且在动态库更新时需要重新编译应用软件。这些方法不仅效率低下,而且给用户带来诸多不便。
5、库版本回滚:通过操作系统包管理工具或第三方软件仓库提供旧版库的安装包,允许用户手动回退到与老应用兼容的库版本。但这种方法可能导致系统资源浪费、版本混乱以及潜在的安全风险,且并非所有历史库版本都能得到长期支持,同时,由于新老动态库软件包冲突,会导致系统功能异常。
技术实现思路
1、为解决国产操作系统大版本迭代升级后,由于动态库soname名称改变导致的应用软件兼容性问题,本发明提供了一种国产操作系统环境下动态库兼容方法及装置。
2、第一方面,本技术提供一种国产操作系统环境下动态库兼容方法,采用如下的技术方案:
3、一种国产操作系统环境下动态库兼容方法,包括:
4、步骤s101,当存在需要运行的应用软件时,解析所述应用软件,得到所述应用软件对应的动态库依赖列表,所述动态库依赖列表中包括多个soname,所述soname为所述应用软件运行所需的soname;
5、步骤s102,基于所述动态库依赖列表从所述多个soname中确定出目标soname,所述目标soname是所述动态库以来列表中未执行过步骤s103的soname;
6、步骤s103,获取所述目标soname的真实路径;
7、步骤s104,基于所述目标soname的真实路径确定所述目标soname对应的动态库版本库文件并加载;
8、步骤s105,判断所述动态库依赖列表中是否存在未确定出真实路径的soname,若存在,则继续执行步骤s102,若未存在,则循环结束。
9、在另一种可能实现的方式中,解析所述应用软件,得到所述应用软件对应的动态库依赖列表,包括:
10、基于elf文件结构解析能力,从二进制应用软件头部的dt_needed区域中抽取包含在内的多项soname条目,并将所述多项soname条目整合为所述应用软件对应的动态库依赖列表。
11、在另一种可能实现的方式中,获取目标soname的真实路径,包括:
12、从soname多版本动态库仓库中获取目标soname的真实路径,所述soname多版本动态库仓库中包括多种版本的soname动态库以及每种版本的soname动态库对应的真实路径。
13、在另一种可能实现的方式中,从soname多版本动态库仓库中获取目标soname的真实路径,之前还包括:
14、当检测到存在新版本的动态库安装到操作系统时,为每个版本的动态库生成唯一的soname标识符,并得到多种版本的动态库分别对应的soname动态库;
15、建立所述soname标识符与对应版本的动态库文件之间的关联,得到每个版本的soname动态库对应的真实路径;
16、对多种版本的soname动态库以及每种版本的soname动态库对应的真实路径进行存储,得到soname多版本动态库仓库。
17、第二方面,本技术提供一种国产操作系统环境下动态库兼容装置,采用如下的技术方案:
18、一种国产操作系统环境下动态库兼容装置,包括:soname多版本动态库管理系统以及智能链接解析模块,其中,
19、智能链接解析模块:用于当存在需要运行的应用软件时,解析所述应用软件,得到所述应用软件对应的动态库依赖列表,基于所述动态库依赖列表从所述多个soname中确定出目标soname,所述动态库依赖列表中包括多个soname,所述soname为所述应用软件运行所需的soname;
20、soname多版本动态库管理系统:用于获取所述目标soname的真实路径,并基于所述目标soname的真实路径确定所述目标soname对应的动态库版本库文件。
21、在另一种可能的实现方式中,智能链接解析模块解析所述应用软件,得到所述应用软件对应的动态库依赖列表,包括:
22、基于elf文件结构解析能力,从二进制应用软件头部的dt_needed区域中抽取包含在内的多项soname条目,并将所述多项soname条目整合为所述应用软件对应的动态库以来列表。
23、在另一种可能的实现方式中,soname多版本动态库管理系统获取目标soname的真实路径,包括:
24、从soname多版本动态库仓库中获取目标soname的真实路径,所述soname多版本动态库仓库中包括多种版本的soname动态库以及每种版本的soname动态库对应的真实路径。
25、在另一种可能的实现方式中,soname多版本动态库管理系统还包括:
26、当检测到存在新版本的动态库安装到操作系统时,为每个版本的动态库生成唯一的soname标识符,并得到多种版本的动态库分别对应的soname动态库;
27、建立所述soname标识符与对应版本的动态库文件之间的关联,得到每个版本的soname动态库对应的真实路径;
28、对多种版本的soname动态库以及每种版本的soname动态库对应的真实路径进行存储,得到soname多版本动态库仓库。
29、综上所述,本技术包括以下有益技术效果:
30、本技术提供了一种国产操作系统环境下动态库兼容装置,该装置包括soname多版本动态库管理系统以及智能链接解析模块,通过使用该装置执行本技术提供的一种国产操作系统环境下动态库兼容方法,使得当国产操作系统在进行大版本升级时,能够有效保障老版本应用软件的无缝迁移和兼容性运行,这种技术方案不仅保证了老版本应用软件的正常运行,还提高了用户体验和系统的稳定性。同时,由于避免了大规模的应用软件更新或重新编译,本技术还具有显著的经济效益和实用性,极大减轻了用户和企业的系统升级成本,提高了国产操作系统的市场接纳度和生态吸引力。此外,该装置为国产操作系统在保持技术进步的同时,提供了稳定的软件生态环境。
1.一种国产操作系统环境下动态库兼容方法,其特征在于,包括:
2.根据权利要求1所述的一种国产操作系统环境下动态库兼容方法,其特征在于,解析所述应用软件,得到所述应用软件对应的动态库依赖列表,包括:
3.根据权利要求1所述的一种国产操作系统环境下动态库兼容方法,其特征在于,获取目标soname的真实路径,包括:
4.根据权利要求3所述的一种国产操作系统环境下动态库兼容方法,其特征在于,从soname多版本动态库仓库中获取目标soname的真实路径,之前还包括:
5.一种国产操作系统环境下动态库兼容装置,其特征在于,包括:soname多版本动态库管理系统以及智能链接解析模块,其中,
6.根据权利要求5所述的一种国产操作系统环境下动态库兼容装置,其特征在于,智能链接解析模块解析所述应用软件,得到所述应用软件对应的动态库依赖列表,包括:
7.根据权利要求5所述的一种国产操作系统环境下动态库兼容装置,其特征在于,soname多版本动态库管理系统获取目标soname的真实路径,包括:
8.根据权利要求7所述的一种国产操作系统环境下动态库兼容装置,其特征在于,soname多版本动态库管理系统还包括:
