linux交叉编译的作用是什么

70次阅读
没有评论

共计 1950 个字符,预计需要花费 5 分钟才能阅读完成。

本篇内容主要讲解“linux 交叉编译的作用是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让丸趣 TV 小编来带大家学习“linux 交叉编译的作用是什么”吧!

在 linux 中,交叉编译是一种计算机环境中运行的编译程序,能编译出另外一种环境下运行的代码;交叉编译出来的程序,所要运行的目标环境中,各种资源,都相对有限,所以很难进行直接的本地编译,有时是因为目的平台上不允许或不能够安装我们所需要的编译器,而我们又需要这个编译器的某些特征,所以需要使用交叉编译。

本教程操作环境:linux7.3 系统、Dell G3 电脑。

linux 交叉编译有什么用

什么是交叉编译

本地编译

解释什么是交叉编译之前,先要明白一个概念:本地编译

我们之前常见的软件开发,都是属于本地编译:在当前的 PC 下,x86 的 CPU 下,直接编译出来程序,可以运行的程序(或者库文件),其可以直接在当前的环境,即 x86 的 CPU 下,当前电脑中,运行。

此时的编译,可以叫做:本地编译,即在当前目标平台下,编译出来的程序,也只是放到当前平台下,就可以运行的。

交叉编译

交叉编译,是一个和,本地编译,相对应的概念。

而所谓的,交叉编译,就是:在一种平台上编译,编译出来的程序,是放到别的平台上运行即编译的环境,和运行的环境不一样,属于交叉的,此所谓 cross。

交叉编译,这个概念,主要和嵌入式开发有关。

例 如.:在 x86 平台上编译,在 ARM 平台上运行。

一种最常见的例子就是:

在进行嵌入式开发时手上有个嵌入式开发板,CPU 是 arm 的然后在 x86 的平台下开发,比如 Ubuntu 的 Linux,或者是 Win 10 然后就需要:

在 x86 的平台上,(用交叉编译器)去编译你写好的程序代码

编译生成的(可执行的)程序,是放到目标开发板,arm 的 CPU 上运行的

此所谓:在 x86 平台上编译,在 ARM 平台上运行。

交叉编译,英文常写作 cross compile,也有其他写法:crosscompile, cross compiling 等。

为何要有交叉编译

之所以要有交叉编译,主要原因是:嵌入式系统中的资源太少

具体的解释就是:交叉编译出来的程序,所要运行的目标环境中,各种资源,都相对有限,所以很难进行直接的本地编译。

最常见的情况是:在进行嵌入式开发时,目标平台,即嵌入式开发板,比如是最大主频 200MHz 的 ARM 的 CPU,加上 32M 的 RAM,加上 1G 的 Nand Flash 等等。在如此相对比较紧张的硬件资源的前提下,在已经运行了嵌入式 Linux 的前提下,是没法很方便的直接在嵌入式 Linux 下,去本地编译,去在 ARM 的 CPU 下,编译出来,供 ARM 的 CPU 可以运行的程序的。因为编译,开发,都需要相对比较多的 CPU,内存,硬盘等资源,而嵌入式开发上的那点资源,只够嵌入式(Linux)系统运行的,没太多剩余的资源,供你本地编译。

BusyBox 中包含 make 等和编译开发相关的工具

对应的,等你后期熟悉了嵌入式开发,熟悉了 Busybox 后,比如在 Buildroot 中去配置 Busybox,或者单独交叉编译 BusyBox 时:

【记录】Ubuntu 下为 QEMU 的 arm 平台交叉编译 BusyBox

就会看到,后来的 BusyBox,功能增加后,也已经包含了一些,和编译开发相关的工具,比如 make 等等

而这些工具,本来的话,只是,放在 PC 端使用,即在 x86 平台下做开发的时候,在交叉编译的时候,才用到的工具,现在,也在(BusyBox 的)嵌入式环境中,支持了。

此时,如果,你在 BusyBox 中把相关的开发工具都选上的话,

再加上,你的目标开发板的硬件配置足够强大的话,比如 CPU 都是以 GHz 为单位,等等

加上相关的开发的库和工具都很全的话

实际上,至少理论上,也是可以在你的嵌入式 Linux 中,进行,有限的,甚至是很大程度上的,本地开发即,直接在 ARM 的开发板上,嵌入式 Linux 中,直接进行嵌入式开发,进行针对 ARM 的本地编译

比如,编译出一个 helloworld,估计还是可以的。

这样,就不存在,或者说,避免了,此处所说的,交叉编译,而变成了本地编译

就相当于,之前在 x86 的 PC 端的,编译程序放在 x86 的 CPU 上运行的本地编译,

在 ARM 的 CPU,嵌入式 Linux 中,也实现了

但是很明显,对于更加复杂的程序或者库,在 ARM 开发板上直接编译的可行性和效率,相对就很低

而且如果是本身折腾 Uboot 等东西,本身目标运行环境,就没有完整的(嵌入式 Linux)系统的话,那么就更加没法在目标平台实现本地编译了。

则还是只能进行,此处所说的,交叉编译

到此,相信大家对“linux 交叉编译的作用是什么”有了更深的了解,不妨来实际操作一番吧!这里是丸趣 TV 网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-22发表,共计1950字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)