LINUX交叉编译工具链和GCC是什么关系啊

我知道交叉编译工具链是面向另一个平台的,可是,我不明白,这个交叉编译工具链主要包括什么啊,我们平时再LINUX下用的GCC只是一个编译工具是吧

编译工具链一般最简化的为 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 。
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-11-25
工具链是一套工具,包括gcc,binutils,c库等

交叉编译工具链就是为交叉编译准备的工具链

gcc是一套编译工具集,包括交叉编译器
第2个回答  2009-11-25
GCC是一个大的协议组,for linux的只是其中一部分,同时linux下交叉编译还有别的选择,GCC4LINUX是最常用的。
第3个回答  2009-11-25
LINUX下的ARM交叉编译工具是 arm-linux-gcc 是GCC的一个版本。

LINUX交叉编译工具链和GCC是什么关系啊
GCC 就是编译器,他的输出每次安装只能有针对一个架构的指令输出。如果要多个架构输出,那就要装多个 GCC ,所以编译工具链里面会有一个 GCC 。交叉编译就是跨架构编译,编译出来的程序不能在本机执行(当然有例外情况)。所以这个时候就需要交叉编译工具链。工具链光有 GCC 是不行的,还需要一个 bin...

(交叉)编译工具链组成部分分析
交叉编译工具链的核心组成部分包括Binutils、GCC和C库,还需配合Linux kernel headers支持Linux系统。它们各自独立,需分别编译。Binutils负责二进制文件处理,包括ld链接器、as汇编器等,需针对不同CPU架构配置。GCC是编译器集合,负责C、C++等语言的编译,实则是调用其他程序的wrapper。它还包含编译器本身和...

arm-none-linux-gnueabi交叉工具链与arm-linux-gcc 有区别吗
eabi标准的要好些,可能arm-linux-gcc就是arm-none-linux-gnueabi的一个链接 终于,郁闷已久的问题攻破了,用了三种配置交叉编译的方法,最终在开发板上实现成功了,现在想一想,有的时候真的也是运气。之前已经试验过使用arm-linux-gcc-3.4.1配置交叉编译编译环境,配置成功了,在开发板上失败了~后来...

Linux嵌入式交叉编译工具链问题 浅谈
简介交叉编译工具链是一个由编译器、连接器和解释器组成的综合开发环境,交叉编译工具链主要由binutils、gcc和glibc 3个部分组成。有时出于减小 libc 库大小的考虑,也可以用别的 c 库来代替 glibc,例如 uClibc、dietlibc 和 newlib。交叉编译工具链主要包括针对目标系统的编译器 gcc、目标系统的二进制工...

Ubuntu 下搭建 GCC 交叉编译工具链
Ubuntu环境中搭建GCC跨平台编译工具链是嵌入式开发的重要步骤,它允许在X86架构的PC上编译ARM架构的代码。首先,交叉编译是区别于本地编译的概念,针对不同平台的程序编译,而交叉编译工具链则是一系列工具的集合,包括预处理、编译、汇编和链接等,自动化编译流程,生成可移植的二进制程序。在Ubuntu下,...

CC = $(CROSS_COMPILE)gcc,makefile中的语句,什么意思啊?
定义要使用的编译器,非交叉编译的场合,CROSS_COMPILE为空,所以使用的就是gcc,交叉编译时(如在x86 PC上编译在ARM上运行的软件),CROSS_COMPILE会定义为类似于arm_linux_gnu_的值,这时会使用交叉编译器(如arm_linux_gnu_gcc)。

深度linux的arm-linux-gnueabihf-gcc编译参数如何配?
交叉编译原则上不能用主机(host)的头文件,这首先是因为编译器在查找头文件的相对路径时,交叉编译器会配置为查找目标平台架构的位置,和主机的gcc不一样,这也是为什么它去arm-linux-gnueabihf这个目录去寻找的原因。其次主机和目标机的系统版本有差异,再加上处理器架构的差异,往往有很多兼容性问题,...

crosstool_ng与arm-linux-gcc的关系是什么
一般装crosstool_ng就行了,它包括交叉编译工具。

用交叉编译器(已经更改为arm-linux-gcc) 编译内核;但是提示gcc没有找 ...
就表示是gcc命令没找到,这个和你的arm-linux-gcc没关系,因为如果arm-linux-gcc找不到的话,会提示arm-linux-gcc找不到的,所以你就只能猜是不是host边的gcc没找到,然后在你的主机端安装gcc开发包就可以了。嵌入式一种重要的能力就是debug,自己锻炼下吧,以后这种简单的问题就能搞定了。

gcc和arm-linux-gcc是什么关系?区别是什么?
gcc是linux系统下面用来将代码编译成一个可执行程序的手段。编译出来的是适用于linux系统的可执行二进制文件。可执行程序其实就是一堆的0101二进制机器码。这些机器码代表什么含义只有机器本身能理解。所以你用gcc编译出来的可执行程序只有在linux系统下面可以运行。举个例子你的可执行程序里面有一句01011.这...

相似回答