LINUX交叉编译工具链和GCC是什么关系啊
我知道交叉编译工具链是面向另一个平台的,可是,我不明白,这个交叉编译工具链主要包括什么啊,我们平时再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 。
GCC 就是编译器,他的输出每次安装只能有针对一个架构的指令输出。如果要多个架构输出,那就要装多个 GCC ,所以编译工具链里面会有一个 GCC 。
交叉编译就是跨架构编译,编译出来的程序不能在本机执行(当然有例外情况)。所以这个时候就需要交叉编译工具链。
工具链光有 GCC 是不行的,还需要一个 binutils 的二进制连接器,以及一个最基本的目标架构的 C 库,C 库还需要一个目标架构的内核源代码才能完全工作(当然不是必须的,但编译有的时候需要)
又因为 GCC 、binutils 不能实现单软件同时多架构输出,所以需要单独另装,又加上 C 库和内核头文件需要目标架构的东西而不能用本机本地架构的数据。
所以一个交叉编译工具链就是针对目标架构准备的单独安装单独使用的 binutils + gcc + glibc + kernel-header 的集合了。
PS:这个 kernel-header 并不一定就是 Linux ,他还可以是别的系统核心开发库,比如 FreeBSD 。
展开全部
工具链是一套工具,包括gcc,binutils,c库等
交叉编译工具链就是为交叉编译准备的工具链
gcc是一套编译工具集,包括交叉编译器
交叉编译工具链就是为交叉编译准备的工具链
gcc是一套编译工具集,包括交叉编译器
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
GCC是一个大的协议组,for linux的只是其中一部分,同时linux下交叉编译还有别的选择,GCC4LINUX是最常用的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
LINUX下的ARM交叉编译工具是 arm-linux-gcc 是GCC的一个版本。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询