一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种在Linux下跨架构编译的方法与流程

2022-09-04 05:49:08 来源:中国专利 TAG:

一种在linux下跨架构编译的方法
技术领域
1.本发明涉及一种编译方法,更具体的说是涉及一种在linux下跨架构编译的方法。


背景技术:

2.随着苹果发布了m1芯片,整个市场逐渐意识到,除了intel x86架构,还有另一种优秀的架构,即arm64,能适用于各种领域。而我们常规的,在x86下进行编译的技术,到了arm64上就会被颠覆,因为arm64有其特有的cpu指令集,并且与x86体系无法兼容;至今为止,市面上已有的跨架构编译方案,其实现原理均是在特定架构的windows系统内,对特定的编程语言的编译器,加装一个跨架构库,该库采用预编译的方式提供,提供对特定cpu指令集的翻译能力,最终实现跨架构编译。而在linux系统内,由于系统本身在编译构建时已与架构紧密绑定,因此不具备直接跨架构编译的能力。
3.这一点同样在苹果的m1是得到了体现,如果开发者尝试开发一款应用,并要允许m1使用,那么就必须购买m1的电脑,否则无法进行这样的开发。即是说在intel x86的体系下,无法直接跨架构编译到arm64。
4.目前现有技术中的跨架构编译方式主要是采用上述的预编译库,并配合指定的工具链来实现跨架构编译,但是其只允许在windows下,对arm64的windows进行跨架构编译,或是对x86的linux进行跨平台编译,但是无法实现从windows x86到linux arm64的跨平台跨架构编译。


技术实现要素:

5.针对现有技术存在的不足,本发明的目的在于提供一种在linux环境下,从一种架构向另一种架构编译程序的方法。解决了原本在跨架构编译时,需要采购特定设备,并且需要在设备上进行代码调试的弊端,强化了在不同架构下开发编译的生产力,降低了设备要求与采购成本。
6.为实现上述目的,本发明提供了如下技术方案:一种在linux下跨架构编译的方法,包括如下步骤:
7.步骤一,精简linux arm64系统;
8.步骤二,配置环境变量;
9.步骤三,安装适用于linuxarm64的编译工具链,通过工具链连接依赖软件库。
10.作为本发明的进一步改进,所述步骤一中精简linux arm64系统的具体步骤如下:步骤一一,在标准的arm64版本的linux上进行剪裁,去掉与硬件相关的驱动程序,去掉后台服务,去掉除内核和标准库以外的应用程序,即可完成对linux arm64系统的精简步骤。
11.作为本发明的进一步改进,所述步骤一一中的剪裁步骤具体为:在安装完linux系统后,将系统内不必要的文件做删除操作,对不必要的服务进行停止并删除其可执行文件,删除服务描述,删除驱动程序,最终得到一个不可在物理设备上启动,但可以在虚拟机环境下启动的,没有任何附加文件的精简系统;
12.其中,精简系统通过linux自带的dd命令,即可生成镜象,并拷贝到其他系统上进行使用。
13.作为本发明的进一步改进,所述步骤二中配置环境变量的步骤如下:
14.步骤二一,在确定更好root后,输入指定的用户目录;
15.步骤二二,在/root目录下,编写对应的sh的配置文件;
16.步骤二三,将新增/root/.bashrc文件进行环境的配置;
17.步骤二四,环境配置完成后,将相关的文件拷贝到系统内。
18.作为本发明的进一步改进,所述步骤三中安装的编译工具链包括:
19.编译器,用于提供软件编译;
20.链接器,用于实现软件链接;
21.调试器,用于提供软件调试。
22.作为本发明的进一步改进,所述步骤一中在精简了linux arm64系统之后,还对原始系统中的文件进行挂载。
23.本发明的有益效果,通过步骤一至步骤三的设置,便可实现采用精简系统的方式来安装相对应的编译工具链,如此开发人员便可通过编译工具链来实现跨架构的程序编译了,极大的降低了编译成本,且工作效率更高。
附图说明
24.图1为本发明的在linux下跨架构编译的方法的流程示意图。
具体实施方式
25.下面将结合附图所给出的实施例对本发明做进一步的详述。
26.参照图1所示,本实施例的一种在linux下跨架构编译的方法,包括如下步骤:
27.步骤一,精简linux arm64系统;
28.步骤二,配置环境变量;
29.步骤三,安装适用于linuxarm64的编译工具链,通过工具链连接依赖软件库,在使用本实施例的方法的过程中,只需要依次执行步骤一至步骤三即可,如此便可有效的构成一个安装了编译工具链的系统,这样开发人员便可有效的进行软件编译了,大大的增加了工作效率,且不需要专门的采购高配置的arm64主机来进行特定的编译工作。
30.作为改进的一种具体实施方式,所述步骤一中精简linux arm64系统的具体步骤如下:
31.步骤一一,在标准的arm64版本的linux上进行剪裁,去掉与硬件相关的驱动程序,去掉后台服务,去掉除内核和标准库以外的应用程序,即可完成对linux arm64系统的精简步骤,通过上述步骤的设置,便可有效的实现精简操作,所谓的精简的跨架构linux系统,是指在标准的arm64版本的linux上进行剪裁,去掉与硬件相关的驱动程序,去掉后台服务,去掉除内核和标准库以外的应用程序。因此被精简过的linux系统与硬件系统无关,它只是纯软件的系统,可以被放在任意linux环境下,通过更换root目录的方式来运行。
32.作为改进的一种具体实施方式,所述步骤一一中的剪裁步骤具体为:在安装完linux系统后,将系统内不必要的文件做删除操作,对不必要的服务进行停止并删除其可执
行文件,删除服务描述,删除驱动程序,最终得到一个不可在物理设备上启动,但可以在虚拟机环境下启动的,没有任何附加文件的精简系统;其中,精简系统通过linux自带的dd命令,即可生成镜象,并拷贝到其他系统上进行使用,通过上述方式的设置,便可有效的实现剪裁步骤了,对于标准的linux系统来说,只需要拥有内核即可以完成启动,因此其他组件都不是必要的(参考lfs对于最简linux的描述https://wiki.linuxfromscratch.org/lfs/)。在安装完linux系统后,将系统内不必要的文件作删除操作,对不必要的服务进行停止并删除其可执行文件,删除服务描述,删除驱动程序,最终将得到一个不可在物理设备上启动,但可以在虚拟机环境下启动的,没有任何附加文件的精简系统。将这个系统通过linux自带的dd命令,即可生成镜象,并拷贝到其他系统上进行使用。
33.作为改进的一种具体实施方式,所述步骤二中配置环境变量的步骤如下:
34.步骤二一,在确定更好root后,输入指定的用户目录;
35.步骤二二,在/root目录下,编写对应的sh的配置文件;
36.步骤二三,将新增/root/.bashrc文件进行环境的配置;
37.步骤二四,环境配置完成后,将相关的文件拷贝到系统内,在精简linux的过程中,由于去掉了系统启动流程,使得更换root后,不存在环境变量,因此与环境相关的内容需要手动添加,例如系统默认的bin/sbin位置,以及/usr目录的位置,首先确定更换root后,需要指定的用户目录,即指属于用户的工作目录,该目录通常是/root。因此在/root目录下,编写对应的sh的配置文件,如采用ubuntu作为发行版进行精简时,使用的sh即是bash,将新增/root/.bashrc文件进行环境的配置,而使用alpine作为发行版进行精简时,使用的sh是ash,即需要新增/root/.ash文件进行环境的配置。环境配置完成后,需要手动将相关的文件拷贝到系统内,如精简系统将要用作go语言的编译,则需要将go语言相关的编译器,库文件拷入。完成后,同样需要使用linux自带的dd命令进行生成镜象。
38.作为改进的一种具体实施方式,所述步骤三中安装的编译工具链包括:
39.编译器,用于提供软件编译;
40.链接器,用于实现软件链接;
41.调试器,用于提供软件调试,通过上述步骤的设置,便可有效的实现安装编译工具链了,这将等同于在一款arm64设备上,安装相应的开发工具。在安装过程中,若是不希望精简系统联网,则可以同时安装依赖软件库,以提供在链接时的必要文件;若是精简系统可联网,则可以按照正常的开发流程来进行对依赖代码的拉取,以及编译依赖和链接成可执行程序。
42.作为改进的一种具体实施方式,所述步骤一中在精简了linux arm64系统之后,还对原始系统中的文件进行挂载,在精简系统中,由于更换root目录后,带来了与原始系统文件系统不互通的问题,因此需要额外对原始系统中的文件进行挂载,使其可以在精简系统中被识别,并且在精简系统中修改文件时,可以直接同步到原始系统中。
43.综上所述,通过步骤一至步骤三设置,便可有效的实现构建出安装了编译工具链的系统,且该系统可以被放在任意linux环境下,通过更换root目录的方式来运行,如此便不需要专门的采购高配置的arm64主机来进行特定的编译工作,有效的降低了开发成本,增加了编译的工作效率。
44.以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施
例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献