您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

linux交叉编译有什么用

2024/4/10 3:13:43发布12次查看
在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视频教程
以上就是linux交叉编译有什么用的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product