System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本公开涉及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作为开发环
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...
【专利技术属性】
技术研发人员:廖政高,罗建,吴文杰,夏选琼,何晓杰,李琦,尹道毅,宋杨,
申请(专利权)人:重庆云内核智能科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。