linux嵌入式系统的开发为什么要用到交叉编译器?交叉编译器的作用是什么?

linux嵌入式系统的开发为什么要用到交叉编译器?交叉编译器的作用是什么?,第1张

因为嵌入式系统上的能运行的二进制文件格式与一般x86linux平台上运行的二进制文件的格式不一样,所以需要在linux平台上利用能编译出目标平台二进制文件的编译器进行交叉编译,这种编译器就是交叉编译器,这里说得比较简略,具体的见百科吧

http://baike.baidu.com/view/650389.htm?fr=ala0

编译工具链一般最简化的为

binutils

+

gcc

+

glibc

+

kernel-header

组合的环境。

GCC

就是编译器,他的输出每次安装只能有针对一个架构的指令输出。如果要多个架构输出,那就要装多个

GCC

,所以编译工具链里面会有一个

GCC

交叉编译就是跨架构编译,编译出来的程序不能在本机执行(当然有例外情况)。所以这个时候就需要交叉编译工具链。

工具链光有

GCC

是不行的,还需要一个

binutils

的二进制连接器,以及一个最基本的目标架构的

C

库,C

库还需要一个目标架构的内核源代码才能完全工作(当然不是必须的,但编译有的时候需要)

又因为

GCC

、binutils

不能实现单软件同时多架构输出,所以需要单独另装,又加上

C

库和内核头文件需要目标架构的东西而不能用本机本地架构的数据。

所以一个交叉编译工具链就是针对目标架构准备的单独安装单独使用的

binutils

+

gcc

+

glibc

+

kernel-header

的集合了。

PS:这个

kernel-header

并不一定就是

Linux

,他还可以是别的系统核心开发库,比如

FreeBSD


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8540730.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-17
下一篇2023-04-17

发表评论

登录后才能评论

评论列表(0条)

    保存