System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 在OpenEuler系统上实现原生编译向下兼容的方法技术方案_技高网

在OpenEuler系统上实现原生编译向下兼容的方法技术方案

技术编号:40068930 阅读:15 留言:0更新日期:2024-01-16 23:52
本申请涉及一种在OpenEuler系统上实现原生编译向下兼容的方法,通过加装另一版本的GLIBC来实现原生程序兼容,以此解决现有方案中在构建机上无法生成兼容程序的技术缺陷问题。采用本方案,能够将一切需要原生编译的应用,在OpenEuler上进行编译,并且在其他自带了低版本GLIBC的Linux系统下运行。用户使用操作系统时,可以直接使用Linux系统上编译好的“兼容软件”,正常应用而无需作出选择,不会影响OpenEuler在Linux中的通用性,同时可以使得开发人员轻易地在OpenEuler上进行原生应用程序的开发和编译,提高Linux系统的程序兼容通用性。

【技术实现步骤摘要】

本公开涉及linux操作系统,尤其涉及一种在openeuler系统上实现原生编译向下兼容的方法、系统和电子设备。


技术介绍

1、openeuler,是华为所推出的开源操作系统,其核心类似于传统的centos linux,采用rpm和dnf作为包管理机制。

2、原生应用,特指不经过虑拟机转译,直接运行在cpu上的应用程序,这类应用程序拥有强平台相关性和强架构相关性,只能在特定平台和特定架构的cpu下运行,作为运行环境的巨大限制的回报,这类程序的执行性能是非常高的,对比虚拟机或解释型程序,性能要高出100~10000倍。

3、glibc,特指在linux下的c/c++运行时库,在通常情况下,linux操作系统均会集成glibc以供c/c++程序的运行,并且操作系统本身也依赖glibc才能正常运行。

4、由于上述情况的存在,在实际开发过程中,会有各种强性能要求的程序,必须采用原生开发(应用),因此就会产生如下问题:

5、由于openeuler自带的glibc版本过高,导致了在openeuler下开发编译的程序,都会默认依赖高版本的glibc,这样的程序一旦放到其他的linux下,就会因为该系统的glibc版本低于openeuler,从而导致程序无法运行的问题。

6、目前行业里的解决方案是:由于操作系统本身也依赖glibc,有许多关键组件亦是依赖glibc进行编译的,因此无法对openeuler自带的glibc进行降级,在过往的开发过程中,只要涉及到openeuler作为开发环境的,均需要将相应的源代码移到另一个自带老版本glibc的linux下进行编译。但是,当前方案的劣势在于必须拥有一台自带老版本glibc的linux机器,与开发所使用的机器同步代码来进行编译(通常是用作构建机)。这里同样会产生一些问题,比如说在openeuler上可以正常编译运行,但是到了构建机上就无法编译通过(代码里使用了新版本glibc的特性)或者无法正常运行(因glibc版本差异导致的运行时状况差异)。

7、上述问题在常规的技术方案下都几乎无解将对所有的原生编程语言造成影响,如:c/c++/go/rust等等,严重影响了openeuler在linux中的通用性,并使得开发人员无法轻易的在openeuler上进行原生应用程序的开发和编译。


技术实现思路

1、为了解决上述问题,本申请提出一种在openeuler系统上实现原生编译向下兼容的方法、系统和电子设备。

2、本申请一方面,提出一种在openeuler系统上实现原生编译向下兼容的方法,包括如下步骤:

3、选择待编译的第一版本glibc源码;

4、在机器a的openeuler上,对所述第一版本glibc源码进行编译,获得第一版本glibc;其中,机器a的openeuler上自带第三版本glibc;

5、将所述第一版本glibc打包并安装到机器b的openeuler上;

6、机器b的openeuler接收并解压所述第一版本glibc,并将解压后的所述第一版本glibc放置于指定目录,使所述第一版本glibc和机器b的openeuler上的第二版本glibc共存。

7、作为本申请的一可选实施方案,可选地,机器a的openeuler上的所述第三版本glibc,其版本低于所述第一版本glibc的版本。

8、作为本申请的一可选实施方案,可选地,机器b的openeuler上的所述第二版本glibc,其版本高于所述第一版本glibc的版本。

9、作为本申请的一可选实施方案,可选地,选择待编译的第一版本glibc源码,包括:

10、设定编译命令;

11、在所述编译命令中指定待编译的第一版本glibc源码的glibc版本;

12、根据所述glibc版本,下载对应的所述第一版本glibc源码,参与所述第一版本glibc的编译。

13、作为本申请的一可选实施方案,可选地,在机器a的openeuler上,对所述第一版本glibc源码进行编译,获得第一版本glibc,包括:

14、获取所述第一版本glibc源码;

15、通过configure命令生成编译所需信息,进行编译选项配置;

16、配置完毕,使用make命令,对所配置的编译选项进行编译,得到编译结果:第一版本glibc。

17、作为本申请的一可选实施方案,可选地,在进行编译选项配置之时,至少包括如下选项:

18、选项:保存路径;

19、选项:是否可以修改默认的配置信息;

20、选项:是否将警告当成错误处理。

21、作为本申请的一可选实施方案,可选地,将所述第一版本glibc打包并安装到机器b的openeuler上,包括:

22、确定机器b的openeuler上待安装的指定目录;

23、对所述编译结果:第一版本glibc进行打包,使用make install命令,将所述编译结果:第一版本glibc安装到所述指定目录。

24、作为本申请的一可选实施方案,可选地,在机器b的openeuler上,使所述第一版本glibc和机器b的openeuler上的第二版本glibc共存之后,还包括:

25、获取用户对待编译的所述第一版本glibc的需求数量t;

26、判断所述需求数量t是否满足:

27、t>1,

28、若t>1,则按照权利要求1所述的方法,继续编译并打包安装对应所述需求数量t的glibc版本到机器b的openeuler上;

29、否则放弃。

30、本申请另一方面,提出一种实现所述在openeuler系统上实现原生编译向下兼容的方法的系统,包括:

31、选择模块,用于选择待编译的第一版本glibc源码;

32、编译模块,用于在机器a的openeuler上,对所述第一版本glibc源码进行编译,获得第一版本glibc;其中,机器a的openeuler上自带第三版本glibc;

33、打包安装模块,用于将所述第一版本glibc打包并安装到机器b的openeuler上;

34、解压模块,用于机器b的openeuler接收并解压所述第一版本glibc,并将解压后的所述第一版本glibc放置于指定目录,使所述第一版本glibc和机器b的openeuler上的第二版本glibc共存。

35、本申请另一方面,还提出一种电子设备,包括:

36、处理器;

37、用于存储处理器可执行指令的存储器;

38、其中,所述处理器被配置为执行所述可执行指令时实现所述的一种在openeuler系统上实现原生编译向下兼容的方法。

39、本专利技术的技术效果:

40、本申请本文档来自技高网...

【技术保护点】

1.一种在OpenEuler系统上实现原生编译向下兼容的方法,其特征在于,包括如下步骤:

2.根据权利要求1所述的一种在OpenEuler系统上实现原生编译向下兼容的方法,其特征在于,机器A的OpenEuler上的所述第三版本GLIBC,其版本低于所述第一版本GLIBC的版本。

3.根据权利要求1所述的一种在OpenEuler系统上实现原生编译向下兼容的方法,其特征在于,机器B的OpenEuler上的所述第二版本GLIBC,其版本高于所述第一版本GLIBC的版本。

4.根据权利要求1所述的一种在OpenEuler系统上实现原生编译向下兼容的方法,其特征在于,选择待编译的第一版本GLIBC源码,包括:

5.根据权利要求1所述的一种在OpenEuler系统上实现原生编译向下兼容的方法,其特征在于,在机器A的OpenEuler上,对所述第一版本GLIBC源码进行编译,获得第一版本GLIBC,包括:

6.根据权利要求5所述的一种在OpenEuler系统上实现原生编译向下兼容的方法,其特征在于,在进行编译选项配置之时,至少包括如下选项:

7.根据权利要求5所述的一种在OpenEuler系统上实现原生编译向下兼容的方法,其特征在于,将所述第一版本GLIBC打包并安装到机器B的OpenEuler上,包括:

8.根据权利要求1所述的一种在OpenEuler系统上实现原生编译向下兼容的方法,其特征在于,在机器B的OpenEuler上,使所述第一版本GLIBC和机器B的OpenEuler上的第二版本GLIBC共存之后,还包括:

9.一种实现权利要求1-8中任一项所述在OpenEuler系统上实现原生编译向下兼容的方法的系统,其特征在于,包括:

10.一种电子设备,其特征在于,包括:

...

【技术特征摘要】

1.一种在openeuler系统上实现原生编译向下兼容的方法,其特征在于,包括如下步骤:

2.根据权利要求1所述的一种在openeuler系统上实现原生编译向下兼容的方法,其特征在于,机器a的openeuler上的所述第三版本glibc,其版本低于所述第一版本glibc的版本。

3.根据权利要求1所述的一种在openeuler系统上实现原生编译向下兼容的方法,其特征在于,机器b的openeuler上的所述第二版本glibc,其版本高于所述第一版本glibc的版本。

4.根据权利要求1所述的一种在openeuler系统上实现原生编译向下兼容的方法,其特征在于,选择待编译的第一版本glibc源码,包括:

5.根据权利要求1所述的一种在openeuler系统上实现原生编译向下兼容的方法,其特征在于,在机器a的openeuler上,对所述第一版本g...

【专利技术属性】
技术研发人员:廖政高罗建吴文杰夏选琼何晓杰李琦尹道毅宋杨
申请(专利权)人:重庆云内核智能科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1