一种交叉编译方法、装置、设备及介质制造方法及图纸

技术编号:39325168 阅读:10 留言:0更新日期:2023-11-12 16:04
本公开涉及一种交叉编译方法、装置、设备及介质,涉及计算机技术领域,其中方法包括:利用本地服务端向云平台发送数据文件;利用云平台解析数据文件,并向本地服务端返回容器信息;利用本地服务端根据容器信息和多个脚本模板生成多个脚本;在本地服务端运行多个脚本,从云平台拉取容器镜像文件至本地服务端,对目标程序代码进行交叉编译;将交叉编译得到的可执行代码部署在目标平台上运行。通过上述步骤,编译人员可以根据需求从云平台中选取与目标平台对应的容器信息文件,并在形成的容器镜像中对目标程序代码进行交叉编译,再将编译后的可执行代码部署并在目标平台运行,从而实现对交叉编译环境的自动部署。对交叉编译环境的自动部署。对交叉编译环境的自动部署。

【技术实现步骤摘要】
一种交叉编译方法、装置、设备及介质


[0001]本公开涉及计算机
,尤其涉及一种交叉编译方法、装置、设备及介质。

技术介绍

[0002]在软件开发过程中,软件的功能模块涉及繁多,往往需要多个团队协同合作,共同完成软件的开发。
[0003]一般情况下交叉编译都会采用轻量级容器技术,如容器化技术(docker),docker可以部署交叉编译工具链,从而进行交叉编译,是统一各个团队交叉编译构建环境的方式。但各个团队在编译过程中可能会根据自己的需求选择不同的编译环境和编译工具,且各个团队和功能模块之间选用的交叉编译环境无法做到有效分享,这样会导致各个模块在集合时出现编译环境不一致的问题,从而影响工程进度。
[0004]因此,亟需一种交叉编译方法,能够对交叉编译环境自动部署。

技术实现思路

[0005]为克服相关技术中存在的问题,本公开提供一种交叉编译方法、装置、设备及介质。
[0006]根据本公开实施例的第一方面,提供一种交叉编译方法,应用于交叉编译系统,所述交叉编译系统包括本地服务端、云平台和目标平台,包括利用本地服务端向云平台发送数据文件,所述数据文件包括交叉编译工具链数据、目标平台数据和容器数据;
[0007]利用所述云平台解析所述数据文件,并向所述本地服务端返回容器信息,所述容器信息包括容器数据包和交叉编译工具数据包;
[0008]利用所述本地服务端根据所述容器信息和多个脚本模板生成多个脚本;
[0009]在所述本地服务端运行所述多个脚本,从所述云平台拉取容器镜像文件至本地服务端,对目标程序代码进行交叉编译;
[0010]将交叉编译得到的可执行代码部署在所述目标平台上运行。
[0011]根据本公开实施例的第二方面,提供一种交叉编译装置,包括发送模块,用于利用本地服务端向云平台发送数据文件,所述数据文件包括交叉编译工具链数据、目标平台数据和容器数据;
[0012]解析模块,用于利用所述云平台解析所述数据文件,并向所述本地服务端返回容器信息,所述容器信息包括容器数据包和交叉编译工具数据包;
[0013]第一生成模块,用于利用所述本地服务端根据所述容器信息和多个脚本模板生成多个脚本;
[0014]编译模块,用于在所述本地服务端运行所述多个脚本,从所述云平台拉取容器镜像文件至本地服务端,对目标程序代码进行交叉编译;
[0015]运行模块,用于将交叉编译得到的可执行代码部署所述目标平台上运行。
[0016]根据本公开实施例的第三方面,提供一种电子设备,包括:处理器;用于存储所述
处理器可执行指令的存储器;所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现本公开第一方面所提供的交叉编译方法。
[0017]根据本公开实施例的第四方面,提供一种计算机可读存储介质,其上存储有计算机程序指令,该程序指令被处理器执行时实现本公开第一方面所提供的交叉编译方法的步骤。
[0018]本公开的实施例提供的技术方案可以包括以下有益效果:编译人员可以根据需求从本地服务端上传数据文件至云平台,云平台解析数据文件并选取与目标平台对应的容器信息并将所述容器信息文件返回至本地服务端,编译人员在本地服务端形成的容器镜像中对目标程序代码进行交叉编译,然后将交叉编译后的可执行代码部署在目标平台上,并运行,从而实现对交叉编译环境的自动部署。
[0019]应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
[0020]此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
[0021]图1是根据一示例性实施例示出的一种交叉编译方法的一流程示意图;
[0022]图2是根据一示例性实施例示出的一种交叉编译方法的另一流程示意图;
[0023]图3是根据一示例性实施例示出的配置文件示意图;
[0024]图4是根据一示例性实施例示出的一种交叉编译装置的结构示意图;
[0025]图5是根据一示例性实施例示出的一种电子设备的结构示意图。
具体实施方式
[0026]下面将结合附图详细地对示例性实施例进行描述说明。
[0027]应当指出,相关实施例及附图仅为描述说明本公开所提供的示例性实施例,而非本公开的全部实施例,也不应理解本公开受相关示例性实施例的限制。
[0028]应当指出,本公开中所用术语“第一”、“第二”等仅用于区别不同步骤、设备或模块等。相关术语既不代表任何特定技术含义,也不表示它们之间的顺序或者相互依存关系。
[0029]应当指出,本公开中所用术语“一个”、“多个”、“至少一个”的修饰是示意性而非限制性的。除非在上下文另有明确指出,否则应该理解为“一个或多个”。
[0030]应当指出,本公开中所用术语“和/或”,用于描述关联对象之间的关联关系,一般表示至少存在三种关联关系。例如,A和/或B,至少可以表示:单独存在A,同时存在A和B,单独存在B这三种关联关系。
[0031]应当指出,本公开的方法实施例中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。除非特别说明,本公开的范围不受相关实施例中步骤的描述顺序限制。
[0032]需要说明的是,本公开中所有获取信号、信息或数据的动作都是在遵照所在地国家相应的数据保护法规政策的前提下,并获得由相应装置所有者给予授权的情况下进行的。
[0033]技术用语说明
[0034]交叉编译:在一个架构平台上生成另一个架构平台上的可执行代码,动态链接库,静态链接库等,例如自动驾驶系统中最常见的,在交叉编译容器(docker x86_64)中部署nvidia的工具链,交叉编译出nvidia orin armv8目标平台运行的程序,编译出的可执行文件,静态链接库和动态链接库可以直接部署运行于orin平台。
[0035]交叉编译环境构建脚本:本质上是一个容器文件,生成交叉编译环境(docker image)。
[0036]编译链接脚本:本质是CMake编译构建系统的编译文件CMakelists.txt,作用是把C/C++源码编译链接为动态库和二进制可执行文件。
[0037]部署运行测试脚本:本质是Linux shell脚本,作用是拷贝动态库和二进制可执行文件到目标平台,在目标平台执行二进制可执行文件,加载动态链接库。
[0038]目标平台:目标平台是算法模块,中间件模块和框架模块编译构建出的制品(可执行文件和库文件)最终的部署运行环境。不同的目标平台具有不同的特点,如stm32平台不具有动态加载动态库的特点,因此在编译链接的时候,需要限制为静态库文件。特定目标平台一般会绑定一个专用的交叉编译工具链。目标平台包括常见的x86、x86_64、xavier、orin、j3、j5和stm32等。
[0039]交叉编译环境:目前主流的轻量级容本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种交叉编译方法,其特征在于,应用于交叉编译系统,所述交叉编译系统包括本地服务端、云平台和目标平台,所述方法包括:利用本地服务端向云平台发送数据文件,所述数据文件包括交叉编译工具链数据、目标平台数据和容器数据;利用所述云平台解析所述数据文件,并向所述本地服务端返回容器信息,所述容器信息包括容器数据包和交叉编译工具数据包;利用所述本地服务端根据所述容器信息和多个脚本模板生成多个脚本;在所述本地服务端运行所述多个脚本,从所述云平台拉取容器镜像文件至本地服务端,对目标程序代码进行交叉编译;将交叉编译得到的可执行代码部署在所述目标平台上运行。2.根据权利要求1所述的方法,其特征在于,所述利用所述云平台解析所述数据文件,并向所述本地服务端返回容器信息的步骤,包括:在所述云平台设置配置文件,所述配置文件用于记录多个编译信息;利用所述云平台解析所述数据文件;在所述配置文件中查找与解析后的数据文件对应的容器信息,并向所述本地服务端返回容器信息。3.根据权利要求1所述的方法,其特征在于,所述利用所述本地服务端根据所述容器信息和多个脚本模板生成多个脚本的步骤,包括:识别所述多个脚本模板中的可替换信息,所述可替换信息包括交叉编译工具链名称、目标平台名称和容器镜像名称;将所述多个脚本模板中的可替换信息替换为所述容器信息,获得多个脚本。4.根据权利要求1所述的方法,其特征在于,所述多个脚本包括容器镜像拉取脚本、交叉编译构建脚本和部署运行测试脚本;所述在所述本地服务端运行所述多个脚本,从所述云平台拉取容器镜像文件至本地服务端,对目标程序代码进行交叉编译,包括:在所述本地服务端运行所述容器镜像拉取脚本,从所述云平台下载所述容器数据包和所述交叉编译工具数据包至所述本地服务端,得到容器镜像和交叉编译工具;在所述本地服务端运行所述交叉编译构建脚本,在所述容器镜像中利用所述交叉编译工具对所述目标程序代码编译。5.根据权利要求2所述的方法,其特征在于,所述在所述云平台设置配置文件的步骤,包括:根据所述编译信息,确定所述编译信息的多个参数;根据所述多个参数对应的参数类型,在空白文件中创建表头,所述表头包括每个参数对应的参数类型;将每个编译信息中的每个参数存储至所述空白文件中对应的表头...

【专利技术属性】
技术研发人员:熊磊路兴晓李学坪肖杰许倜陈永波
申请(专利权)人:国科础石重庆软件有限公司
类型:发明
国别省市:

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

1