原生应用对LinuxArm64的兼容性判断方法技术

技术编号:36761375 阅读:15 留言:0更新日期:2023-03-04 10:56
本申请涉及一种原生应用对Linux Arm64的兼容性判断方法,通过读入原生应用的源码,将原生应用部署在Linux Arm64编译部署环境中;尝试对所述原生应用的源码进行编译,获得对应的指令集;根据预设兼容判断条件,判断所述指令集中的指令是否兼容Linux Arm64编译部署环境:若兼容,则输出最终结果;否则分析当前指令的异常兼容原因,并输出出错信息。能够以最小的代价直接判断应用能否兼容Linux Arm64编译部署环境,并在不兼容的情况下,指出不兼容的代码,从而使得从Linux x86_64到Linux Arm64的环境变更,无需再对应用进行额外测试,直接可以知道兼容情况。可以知道兼容情况。可以知道兼容情况。

【技术实现步骤摘要】
原生应用对Linux Arm64的兼容性判断方法


[0001]本公开涉及指令集应用
,尤其涉及一种原生应用对Linux Arm64的兼容性判断方法、装置和控制系统。

技术介绍

[0002] 在开发过程中,企业内部的编译部署平台,因原先的原生应用编译部署环境为 Linux x86_64(其架构见说明书附图1),而后续由于业务拓展需求,需要将原生应用编译到 Linux Arm64(其架构见说明书附图2)。此时,需要判断原生应用能否兼容Linux Arm64的环境,需要对应用进行额外测试,知道其兼容情况。
[0003]而在正常情况下,编译人员并不知道一个原生应用是否能直接支持Linux Arm64,除非通过源码对它进行编译,并且对编译的过程和结果进行验证。在Linux下,x86_64和Arm64是有巨大的底层指令集差异的,并且也不存在类似于Mac(darwin)那样的融合架构机制,该特性决定了对于一个原生的Linux应用,它无法同时工作于两种架构下。
[0004]因此在Linux上面发布原生应用时,就必须明确的考虑应用所支持的架构。在当前行业中,均是采用编译和验证的方法,原生应用特指的是不需要任何额外的环境依赖,直接依赖操作系统和硬件指令集的那一类应用,通常由C语言,C++,Go,Rust或是其他原生技术栈开发。
[0005]由于目前行业内普遍采用在Linux Arm64环境下对原生应用进行重新编译,并且对编译结果进行完整测试的手段来确认该应用是否真的兼容Linux Arm64环境,对于较为大型的项目,这样的编译尝试将浪费大量时间和计算资源,也需要占用大量的人力资源。
[0006]因此,在现有技术下,无法快速且低成本的完成从 Linux x86_64 到 Linux Arm64的应用迁移。它通常需要一个真实的 Linux Arm64 环境,然后在该环境上重新从源码编译应用程序,并且花费大量的力气在测试上。可以说是效率极低,成本极高,对于行业内越来越多的使用Arm64架构的硬件设备的情况,迁移历史负担较大的应用显然会付出巨额的成本。

技术实现思路

[0007]为了解决上述问题,本申请提出一种原生应用对Linux Arm64的兼容性判断方法、装置和控制系统。
[0008]本申请一方面,提出一种原生应用对Linux Arm64的兼容性判断方法,包括如下步骤:读入原生应用的源码,将原生应用部署在Linux Arm64编译部署环境中;尝试对所述原生应用的源码进行编译,获得对应的指令集;根据预设兼容判断条件,判断所述指令集中的指令是否兼容Linux Arm64编译部署环境:若兼容,则输出最终结果;否则分析当前指令的异常兼容原因,并输出出错信息。
[0009]作为本申请的一可选实施方案,可选地,在获得对应的指令集之后,还包括:预设翻译条件和解析条件;根据所述翻译条件,翻译所述指令集,得到若干指令;根据所述解析条件,对每条所述指令进行指令解析,得到解析后的指令;等待兼容判断。
[0010]作为本申请的一可选实施方案,可选地,根据预设兼容判断条件,判断所述指令集中的指令是否兼容Linux Arm64编译部署环境,包括:根据预设兼容判断条件,判断所述指令集中的指令:是否能够在Linux Arm64编译部署环境中被成功翻译;以及是否能够正常执行;若当前指令能够在Linux Arm64编译部署环境中被成功翻译并正常执行,则判定当前指令兼容Linux Arm64编译部署环境,并输出当前指令的判定结果;循环执行下一条指令的兼容判断。
[0011]作为本申请的一可选实施方案,可选地,根据预设兼容判断条件,判断所述指令集中的指令是否兼容Linux Arm64编译部署环境,还包括:判断所述指令集中的指令是否已读完:若所述指令集中的指令已读完,且都兼容,则判定所述指令集对应的所述原生应用的源码能够在Linux Arm64编译部署环境正常编译,所述原生应用兼容Linux Arm64编译部署环境。
[0012]作为本申请的一可选实施方案,可选地,根据预设兼容判断条件,判断所述指令集中的指令是否兼容Linux Arm64编译部署环境,还包括:若当前指令不能够在Linux Arm64编译部署环境中被成功翻译并正常执行,则判定当前指令不兼容Linux Arm64编译部署环境,并输出当前指令的出错信息;根据出错信息,判断异常原因,进行不兼容处理。
[0013]作为本申请的一可选实施方案,可选地,根据出错信息,判断异常原因,进行不兼容处理,包括:判断出错信息是否为链接库限制:若出错信息为链接库限制,则表明链接库受制于某一特定的指令集架构,并且无法被翻译为另一种架构,所述指令集需要真实环境编译;根据原生应用的属性,获取所述原生应用所属的指令集架构;将所述指令集架构与所述链接库关联。
[0014]作为本申请的一可选实施方案,可选地,根据出错信息,判断异常原因,进行不兼容处理,还包括:若出错信息不为链接库限制,则表明当前指令不兼容;根据当前指令的代码和依赖库,推断代码的修改方式;输出修改建议;所有不兼容指令修改完毕,输出最终结果。
[0015]作为本申请的一可选实施方案,可选地,根据原生应用的属性,获取所述原生应用所属的指令集架构,包括:
将原生应用读入内存;读取头部的ELF结构字节;根据读到的字节内容,进行查表,得到所述原生应用所属的指令集架构。
[0016]本申请另一方面,提出一种装置,用于实现上述所述原生应用对Linux Arm64的兼容性判断方法,包括:读写模块,用于读入原生应用的源码,将原生应用部署在Linux Arm64编译部署环境中;编译模块,用于尝试对所述原生应用的源码进行编译,获得对应的指令集;兼容判断模块,用于根据预设兼容判断条件,判断所述指令集中的指令是否兼容Linux Arm64编译部署环境:若兼容,则输出最终结果;否则分析当前指令的异常兼容原因,并输出出错信息。
[0017]本申请另一方面,还提出一种控制系统,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为执行所述可执行指令时实现上述所述的原生应用对Linux Arm64的兼容性判断方法。
[0018]本专利技术的技术效果:本申请通过读入原生应用的源码,将原生应用部署在Linux Arm64编译部署环境中;尝试对所述原生应用的源码进行编译,获得对应的指令集;根据预设兼容判断条件,判断所述指令集中的指令是否兼容Linux Arm64编译部署环境:若兼容,则输出最终结果;否则分析当前指令的异常兼容原因,并输出出错信息。解决了在开发过程中,因原先的原生应用编译部署环境为 Linux x86_64,而后续由于业务拓展需要编译到 Linux Arm64 时,能够以最小的代价直接判断应用能否兼容,并在不兼容的情况下,指出不兼容的代码,从而使得从 Linux x86_64 到 Linux Arm64的环境变更,无需再对应用进行额外测试,直接可以知道兼容情况,并且可以获知不兼容情况本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.原生应用对Linux Arm64的兼容性判断方法,其特征在于,包括如下步骤:读入原生应用的源码,将原生应用部署在Linux Arm64编译部署环境中;尝试对所述原生应用的源码进行编译,获得对应的指令集;根据预设兼容判断条件,判断所述指令集中的指令是否兼容Linux Arm64编译部署环境:若兼容,则输出最终结果;否则分析当前指令的异常兼容原因,并输出出错信息。2.根据权利要求1所述的原生应用对Linux Arm64的兼容性判断方法,其特征在于,在获得对应的指令集之后,还包括:预设翻译条件和解析条件;根据所述翻译条件,翻译所述指令集,得到若干指令;根据所述解析条件,对每条所述指令进行指令解析,得到解析后的指令;等待兼容判断。3.根据权利要求1所述的原生应用对Linux Arm64的兼容性判断方法,其特征在于,根据预设兼容判断条件,判断所述指令集中的指令是否兼容Linux Arm64编译部署环境,包括:根据预设兼容判断条件,判断所述指令集中的指令:是否能够在Linux Arm64编译部署环境中被成功翻译;以及是否能够正常执行;若当前指令能够在Linux Arm64编译部署环境中被成功翻译并正常执行,则判定当前指令兼容Linux Arm64编译部署环境,并输出当前指令的判定结果;循环执行下一条指令的兼容判断。4.根据权利要求3所述的原生应用对Linux Arm64的兼容性判断方法,其特征在于,根据预设兼容判断条件,判断所述指令集中的指令是否兼容Linux Arm64编译部署环境,还包括:判断所述指令集中的指令是否已读完:若所述指令集中的指令已读完,且都兼容,则判定所述指令集对应的所述原生应用的源码能够在Linux Arm64编译部署环境正常编译,所述原生应用兼容Linux Arm64编译部署环境。5.根据权利要求3所述的原生应用对Linux Arm64的兼容性判断方法,其特征在于,根据预设兼容判断条件,判断所述指令集中的指令是否兼容Linux Arm64编译部署环境,还包括:若当前指令不能够在Linux Arm64编译部署环境中被成功翻译并正常执...

【专利技术属性】
技术研发人员:何晓杰郦才足花京武宋杨秦钢封霞洪张弥
申请(专利权)人:重庆云内核智能科技有限公司
类型:发明
国别省市:

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

1