本申请涉及虚拟机应用对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上面发布基于虚拟机的应用时,就必须明确的考虑应用所支持的架构。在当前行业中,均是采用编译和测试验证的方法。
[0005]对于基于虚拟机的应用,通常采用Java,Python,Javascript等技术进行开发,并且通常执行效率不高,也不具备可靠的安全性。在很多场景下,为了提高效率以及实现安全,不得不内嵌各种原生应用程序。对于基本虚拟机的Linux Arm64下的应用的兼容性检查,即是对该应用内所包含的原生模块部分进行检查。
[0006]由于目前行业内普遍采用在Linux Arm64环境下对应用进行重新编译,并且对编译结果进行完整测试的手段来确认该虚拟机应用是否真的兼容Linux Arm64环境,这是一种对开发、测试资源的极大浪费。
[0007]在现有技术下,无法快速且低成本的完成从Linux x86_64到Linux Arm64的应用迁移。虚拟机应用通常需要一个真实的Linux Arm64环境,然后在该环境上重新从源码编译应用程序,并且花费大量的力气在测试上。可以说是效率极低,成本极高,对于行业内越来越多的使用Arm64架构的硬件设备的情况,迁移历史负担较大的应用显然会付出巨额的成本。
技术实现思路
[0008]为了解决上述问题,本申请提出虚拟机应用对Linux Arm64的兼容判断方法、装置和控制系统。
[0009]本申请一方面,提出一种虚拟机应用对Linux Arm64的兼容判断方法,包括如下步骤:
[0010]读入虚拟机应用源码,将虚拟机应用部署在Linux Arm64编译部署环境中;
[0011]对所述虚拟机应用的源码进行编译,获得编译产物;
[0012]判断所述编译产物内是否有原生模块:
[0013]若无所述原生模块,则判定所述虚拟机应用兼容Linux Arm64编译部署环境;
[0014]否则,根据所述原生模块的兼容型判定结果,判定所述虚拟机应用是否兼容Linux Arm64编译部署环境。
[0015]作为本申请的一可选实施方案,可选地,对所述虚拟机应用的源码进行编译,获得编译产物,包括:
[0016]预设虚拟机应用编译条件;
[0017]按照所述虚拟机应用编译条件,直接对所述虚拟机应用的源码进行编译,获得对应的字节码;
[0018]保存所述字节码为编译产物。
[0019]作为本申请的一可选实施方案,可选地,在判断所述编译产物内是否有原生模块时,还包括:
[0020]预设检查范围;
[0021]在所述检查范围内,对所述编译产物进行检查,判断其内是否存在原生模块;
[0022]若不存在所述原生模块,则判定所述虚拟机应用兼容Linux Arm64编译部署环境;
[0023]输出兼容信息。
[0024]作为本申请的一可选实施方案,可选地,根据所述原生模块的兼容型判定结果,判定所述虚拟机应用是否兼容Linux Arm64编译部署环境,包括:
[0025]当所述编译产物内存在原生模块,读取原生模块列表,获取所述原生模块的名称;
[0026]通过名称检查所述原生模块是否具有与Linux x86_64模块和Linux Arm64模块之间的对应关系:
[0027]若无对应关系,则判定所述虚拟机应用不兼容Linux Arm64编译部署环境;
[0028]输出不兼容信息。
[0029]作为本申请的一可选实施方案,可选地,根据所述原生模块的兼容型判定结果,判定所述虚拟机应用是否兼容Linux Arm64编译部署环境,还包括:
[0030]获取所述不兼容信息;
[0031]根据所述不兼容信息,重新编译所述原生模块;
[0032]直到所述原生模块适应Linux Arm64编译部署环境。
[0033]作为本申请的一可选实施方案,可选地,当通过名称检查所述原生模块是否具有与Linux x86_64模块和Linux Arm64模块之间的对应关系时,还包括:
[0034]若有对应关系,则提取出含有arm64为名的所述原生模块;
[0035]从所提出的所述原生模块中,抽取头部ELF结构;
[0036]判断头部ELF结构是否与Linux Arm64的架构相匹配:
[0037]若匹配,则判定所述虚拟机应用兼容Linux Arm64编译部署环境;
[0038]输出兼容信息。
[0039]作为本申请的一可选实施方案,可选地,当通过名称检查所述原生模块是否具有与Linux x86_64模块和Linux Arm64模块之间的对应关系时,还包括:
[0040]若头部ELF结构是否与Linux Arm64的架构不匹配,则判定所述虚拟机应用不兼容Linux Arm64编译部署环境;
[0041]输出不兼容信息,根据所述不兼容信息,重新编译所述原生模块;
[0042]直到所述原生模块适应Linux Arm64编译部署环境。
[0043]作为本申请的一可选实施方案,可选地,判断头部ELF结构是否与Linux Arm64的架构相匹配,包括:
[0044]将所述原生模块读入内存;
[0045]读取头部的ELF结构字节;
[0046]根据读到的字节内容,进行查表,得到所述原生模块所属的指令集架构;
[0047]根据所述指令集架构,判断所述头部ELF结构是否与Linux Arm64的架构相匹配。
[0048]本申请另一方面,提出一种装置,用于实现所述虚拟机应用对Linux Arm64的兼容判断方法,包括:
[0049]读写模块,用于读入虚拟机应用源码,将虚拟机应用部署在Linux Arm64编译部署环境中;
[0050]编译模块,用于对所述虚拟机应用的源码进行编译,获得编译产物;
[0051]兼容本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.虚拟机应用对Linux Arm64的兼容判断方法,其特征在于,包括如下步骤:读入虚拟机应用源码,将虚拟机应用部署在Linux Arm64编译部署环境中;对所述虚拟机应用的源码进行编译,获得编译产物;判断所述编译产物内是否有原生模块:若无所述原生模块,则判定所述虚拟机应用兼容Linux Arm64编译部署环境;否则,根据所述原生模块的兼容型判定结果,判定所述虚拟机应用是否兼容Linux Arm64编译部署环境。2.根据权利要求1所述的虚拟机应用对Linux Arm64的兼容判断方法,其特征在于,对所述虚拟机应用的源码进行编译,获得编译产物,包括:预设虚拟机应用编译条件;按照所述虚拟机应用编译条件,直接对所述虚拟机应用的源码进行编译,获得对应的字节码;保存所述字节码为编译产物。3.根据权利要求1所述的虚拟机应用对Linux Arm64的兼容判断方法,其特征在于,在判断所述编译产物内是否有原生模块时,还包括:预设检查范围;在所述检查范围内,对所述编译产物进行检查,判断其内是否存在原生模块;若不存在所述原生模块,则判定所述虚拟机应用兼容Linux Arm64编译部署环境;输出兼容信息。4.根据权利要求1所述的虚拟机应用对Linux Arm64的兼容判断方法,其特征在于,根据所述原生模块的兼容型判定结果,判定所述虚拟机应用是否兼容Linux Arm64编译部署环境,包括:当所述编译产物内存在原生模块,读取原生模块列表,获取所述原生模块的名称;通过名称检查所述原生模块是否具有与Linux x86_64模块和Linux Arm64模块之间的对应关系:若无对应关系,则判定所述虚拟机应用不兼容Linux Arm64编译部署环境;输出不兼容信息。5.根据权利要求4所述的虚拟机应用对Linux Arm64的兼容判断方法,其特征在于,根据所述原生模块的兼容型判定结果,判定所述虚拟机应用是否兼容Linux Arm64编译部署环境,还包括:获取所述不兼容信息;根据所述不兼容信息,重新编译所述原生模块;直到所述原生模块适应Linux Arm64编译部署环境。6.根据权利要求4所述的虚拟机应用对Linux Arm64的兼容判断方法,其特征在于,当通过名称检查所述原生模块是否具有与Li...
【专利技术属性】
技术研发人员:何晓杰,郦才足,花京武,宋杨,秦钢,封霞洪,张弥,
申请(专利权)人:重庆云内核智能科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。