本发明涉及计算机软件,具体地说,涉及一种嵌入式软件编译方法、装置、设备、介质及产品。
背景技术:
1、物联网技术在各行各业的普及,催生了越来越多的嵌入式开发板。而这些开发板因其适应的场景不同,导致使用板载cpu不同,其指令集、架构也不相同,从而用来将源码编译成在其上可运行的二进制文件,所需要使用的交叉编译器也不相同。
2、此外,从交叉编译器的版本来看,如果版本不同,默认支持的c、c++标准也有可能不同,而且不同版本间也有一些大的差异。因此,需要根据嵌入式产品的软件开发需求,确定一个合适的交叉编译工具链。传统的嵌入式软件编译构建方式,存在开发效率低、构建过程繁琐的问题。
技术实现思路
1、为了解决上述问题,本发明提出一种嵌入式软件编译方法、装置、设备、介质及产品,能够解决现有编译方法开发效率低、构建过程繁琐的问题。
2、本发明实施例提供一种嵌入式软件编译方法,所述方法由云平台执行,包括:
3、获取终端侧编译所需的环境要素数据;
4、对所述环境要素数据进行分析,确定数据索引信息;
5、根据所述数据索引信息从预设的编译环境资源库中索引出交叉编译工具链和编译器依赖库;
6、将所述交叉编译工具链和所述编译器依赖库进行打包,发送给终端侧的编译工具进行编译。
7、优选地,获取终端侧编译所需的环境要素数据,包括:
8、接收用户输入的嵌入式软件运行的硬件信息以及行业场景信息作为所述环境要素信息;或,
9、接收用户输入的芯片型号和行业标准,在预设的应用场景库中匹配所述环境要素信息;
10、其中,所述硬件信息包括芯片型号和芯片系列;所述行业场景信息包括行业准入标准、代码质量检测规则集以及待检测代码的相对路径。
11、优选地,对所述环境要素数据进行分析,确定数据索引信息,包括:
12、通过预设的聚类分析算法,对所述环境要素数据中的不同输入信息进行聚类分析,得到与所述编译环境资源库中最优的交叉编译工具链或者代码检查规则集的匹配结果,作为所述数据索引信息。
13、优选地,对所述环境要素数据进行分析,确定数据索引信息,包括:
14、将不同的输入信息的计算数据结构以{key:obj,value:obj}格式存储;
15、对存储后的整个数据集划分簇类,将数据集分成若干个不相交的簇类;
16、对每个簇类指定一个初始聚类中心开始迭代,得到不同簇类中与所有数据对象的欧式距离之和最短的一个数据对象,对应确定不同数据库中不同的数据索引号作为所述数据索引信息。
17、进一步地,所述欧式距离的计算公式具体为:
18、其中,dci,k为第i簇类的聚类中心ci和数据对象k之间的欧式距离,objci为第i簇类的聚类中心ci的key值,key值包括有芯片型号soc、芯片类型mod、芯片架构arch、操作系统版本os、编译平台pl的编码组成;objk为数据对象k的key值,qobj为权值。
19、优选地,将所述交叉编译工具链和所述编译器依赖库进行打包,发送给终端侧的编译工具进行编译,包括:
20、将所述交叉编译工具链和所述编译器依赖库进行打包,得到压缩包;
21、向终端侧的编译工具下发待检测的源码信息,并在接收到终端侧发送的下载请求后,通过私有协议编码下发所述压缩包的下载链接到所述终端侧。
22、优选地,所述方法还包括:
23、接收所述终端侧上传的预编译文件,根据代码质量检测规则集的要求,通过词法分析的方式对所述预编译文件进行全部规则的匹配;
24、当识别到所述预编译文件存在不满足某条规则的编码,记录代码位置,完成文件检查,反馈检查结果至终端侧。
25、优选地,所述方法还包括:
26、接收所述终端侧上传的预编译文件和所述预编译文件的单元测试代码;
27、将所述单元测试代码注入所述预编译文件中;
28、通过打桩的方式完成代码分支覆盖率、语句覆盖率的检测,并生成所述预编译文件的代码质量检测结果;
29、反馈所述预编译文件检测完成的命令至所述终端侧。
30、优选地,所述方法还包括:
31、接收所述终端侧上报的编译完成指令后,汇总生成的所有代码质量检测结果作为可视化报表反馈到所述终端侧。
32、本发明实施例还提供一种嵌入式软件编译方法,所述方法由终端侧执行,所述方法包括:
33、上传配置的环境要素数据至云平台;
34、接收所述云平台根据所述环境要素数据下发的压缩包;
35、将所述压缩包中的编译环境配置信息配置到环境变量中,搭建编译环境;
36、根据搭建的编译环境进行软件编译。
37、优选地,接收所述云平台根据所述环境要素数据下发的压缩包,包括:
38、接收云平台下发的待检测的源码信息,将所述源码信息作为代码质量检测信息进行保存;
39、发送的下载请求至所述云平台,通过私有协议解码接收所述云平台下发的下载链接;
40、根据所述下载链接下载压缩包,并安装到指定的目录。
41、优选地,根据搭建的编译环境进行软件编译,包括:
42、生成预编译文件;
43、当所述预编译文件在所述代码质量检测信息的范围内时,将其上传至所述云平台,并接收所述云平台的检查结果。
44、优选地,所述方法还包括:
45、接收到所述云平台测试代码请求,上传单元测试代码至所述云平台;
46、接收到所述云平台的检测完成命令后,继续其他预编译文件的编译。
47、本发明实施例还提供一种嵌入式软件编译装置,所述装置包括:
48、获取模块,用于获取终端侧编译所需的环境要素数据;
49、索引模块,用于对所述环境要素数据进行分析,确定数据索引信息;
50、匹配模块,用于根据所述数据索引信息从预设的编译环境资源库中索引出交叉编译工具链和编译器依赖库;
51、编译模块,用于将所述交叉编译工具链和所述编译器依赖库进行打包,发送给终端侧的编译工具进行编译。
52、优选地,所述获取模块具体用于:
53、接收用户输入的嵌入式软件运行的硬件信息以及行业场景信息作为所述环境要素信息;或,
54、接收用户输入的芯片型号和行业标准,在预设的应用场景库中匹配所述环境要素信息;
55、其中,所述硬件信息包括芯片型号和芯片系列;所述行业场景信息包括行业准入标准、代码质量检测规则集以及待检测代码的相对路径。
56、优选地,所述索引模块具体用于:
57、通过预设的聚类分析算法,对所述环境要素数据中的不同输入信息进行聚类分析,得到与所述编译环境资源库中最优的交叉编译工具链或者代码检查规则集的匹配结果,作为所述数据索引信息。
58、优选地,所述索引模块具体用于:
59、将不同的输入信息的计算数据结构以{key:obj,value:obj}格式存储;
60、对存储后的整个数据集划分簇类,将数据集分成若干个不相交的簇类;
61、对每个簇类指定一个初始聚类中心开始迭代,得到不同簇类中与所有数据对象的欧式距离之和最短的一个数据对象,对应确定不同数据库中不同的数据索引号作为所述数据索引信息。
62、进一步地,所述欧式距离的计算公式具体为:
63、其中,dci,k为第i簇类的聚类中心ci和数据对象k之间的欧式距离,objci为第i簇类的聚类中心ci的key值,key值包括有芯片型号soc、芯片类型mod、芯片架构arch、操作系统版本os、编译平台pl的编码组成;objk为数据对象k的key值,qobj为权值。
64、优选地,所述编译模块具体用于:
65、将所述交叉编译工具链和所述编译器依赖库进行打包,得到压缩包;
66、向终端侧的编译工具下发待检测的源码信息,并在接收到终端侧发送的下载请求后,通过私有协议编码下发所述压缩包的下载链接到所述终端侧。
67、优选地,所述装置还包括预编译模块,用于:
68、接收所述终端侧上传的预编译文件,根据代码质量检测规则集的要求,通过词法分析的方式对所述预编译文件进行全部规则的匹配;
69、当识别到所述预编译文件存在不满足某条规则的编码,记录代码位置,完成文件检查,反馈检查结果至终端侧。
70、优选地,所述装置还包括质量检测模块,用于:接收所述终端侧上传的预编译文件和所述预编译文件的单元测试代码;
71、将所述单元测试代码注入所述预编译文件中;
72、通过打桩的方式完成代码分支覆盖率、语句覆盖率的检测,并生成所述预编译文件的代码质量检测结果;
73、反馈所述预编译文件检测完成的命令至所述终端侧。
74、优选地,所述装置还包括汇总模块,用于:
75、接收所述终端侧上报的编译完成指令后,汇总生成的所有代码质量检测结果作为可视化报表反馈到所述终端侧。
76、本发明又一实施例提供一种嵌入式软件编译装置,所述装置包括:
77、上传模块,用于上传配置的环境要素数据至云平台;
78、接收模块,用于接收所述云平台根据所述环境要素数据下发的压缩包;
79、环境搭建模块,用于将所述压缩包中的编译环境配置信息配置到环境变量中,搭建编译环境;
80、编译模块,用于根据搭建的编译环境进行软件编译。
81、优选地,所述接收模块用于:
82、接收云平台下发的待检测的源码信息,将所述源码信息作为代码质量检测信息进行保存;
83、发送的下载请求至所述云平台,通过私有协议解码接收所述云平台下发的下载链接;
84、根据所述下载链接下载压缩包,并安装到指定的目录。
85、优选地,所述编译模块用于:
86、生成预编译文件;
87、当所述预编译文件在所述代码质量检测信息的范围内时,将其上传至所述云平台,并接收所述云平台的检查结果。
88、优选地,所述装置还包括测试代码模块,用于:
89、接收到所述云平台测试代码请求,上传单元测试代码至所述云平台;
90、接收到所述云平台的检测完成命令后,继续其他预编译文件的编译。
91、本发明实施例还提供一种终端设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如上述任一项实施例所述的一种嵌入式软件编译方法。
92、本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如上述任一项实施例所述的一种嵌入式软件编译方法。
93、本发明实施例还提供一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现上述任一项实施例所述方法的步骤。
94、与现有技术相比,本发明提供一种嵌入式软件编译方法、装置、设备、介质及产品,通过获取终端侧编译所需的环境要素数据;对所述环境要素数据进行分析,确定数据索引信息;根据所述数据索引信息从预设的编译环境资源库中索引出交叉编译工具链和编译器依赖库;将所述交叉编译工具链和所述编译器依赖库进行打包,发送给终端侧的编译工具进行编译。本技术能够解决现有编译方法开发效率低、构建过程繁琐的问题。
1.一种嵌入式软件编译方法,其特征在于,所述方法由云平台执行,所述方法包括:
2.根据权利要求1所述的嵌入式软件编译方法,其特征在于,获取终端侧编译所需的环境要素数据,包括:
3.根据权利要求1所述的嵌入式软件编译方法,其特征在于,对所述环境要素数据进行分析,确定数据索引信息,包括:
4.根据权利要求1所述的嵌入式软件编译方法,其特征在于,对所述环境要素数据进行分析,确定数据索引信息,包括:
5.根据权利要求4所述的嵌入式软件编译方法,其特征在于,所述欧式距离的计算公式具体为:
6.根据权利要求1所述的嵌入式软件编译方法,其特征在于,将所述交叉编译工具链和所述编译器依赖库进行打包,发送给终端侧的编译工具进行编译,包括:
7.根据权利要求1所述的嵌入式软件编译方法,其特征在于,所述方法还包括:
8.根据权利要求1所述的嵌入式软件编译方法,其特征在于,所述方法还包括:
9.根据权利要求1所述的嵌入式软件编译方法,其特征在于,所述方法还包括:
10.一种嵌入式软件编译方法,其特征在于,所述方法由终端侧执行,所述方法包括:
11.根据权利要求10所述的嵌入式软件编译方法,其特征在于,接收所述云平台根据所述环境要素数据下发的压缩包,包括:
12.根据权利要求11所述的嵌入式软件编译方法,其特征在于,根据搭建的编译环境进行软件编译,包括:
13.根据权利要求12所述的嵌入式软件编译方法,其特征在于,所述方法还包括:
14.一种嵌入式软件编译装置,其特征在于,所述装置包括:
15.一种嵌入式软件编译装置,其特征在于,所述装置包括:
16.一种电子设备,其特征在于,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至13中任意一项所述的嵌入式软件编译方法。
17.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如权利要求1至13中任意一项所述的嵌入式软件编译方法。
18.一种计算机程序产品,包括计算机程序/指令,其特征在于,该计算机程序/指令被处理器执行时实现权利要求1~13中任一所述方法的步骤。