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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 。
参考技术A 工具链是一套工具,包括gcc,binutils,c库等

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

gcc是一套编译工具集,包括交叉编译器
参考技术B GCC是一个大的协议组,for linux的只是其中一部分,同时linux下交叉编译还有别的选择,GCC4LINUX是最常用的。 参考技术C LINUX下的ARM交叉编译工具是 arm-linux-gcc 是GCC的一个版本。

Ubuntu配置交叉编译环境(配置交叉编译工具链)配置arm-linux-gcc交叉编译工具链(添加交叉编译工具链(toolchain)到环境变量)

我们arm-linux-gnueabihf-gcc的交叉编译工具集在
/home/yg/rv/sdk/rv1.8/rv1126_rv1109/buildroot/output/rockchip_rv1126_rv1109/host/bin/
目录下

把交叉编译工具链的路径添加到环境变量PATH中去:

gedit /etc/profile

在最后面添加:

export PATH=$PATH:/home/yg/rv/sdk/rv1.8/rv1126_rv1109/buildroot/output/rockchip_rv1126_rv1109/host/bin/

使环境变量生效并验证:

source /etc/profile

检查是否将路径加入到PATH:

echo $PATH

查看环境是否搭建成功:

arm-linux-gnueabihf-gcc -v

参考文章:Ubuntu系统下arm-linux-gcc交叉编译环境搭建过程

20220822 貌似执行source /etc/profile打开新的终端还是之前的环境不知道咋回事。。。。

以上是关于LINUX交叉编译工具链和GCC是啥关系啊的主要内容,如果未能解决你的问题,请参考以下文章

LINUX之安装交叉编译工具链问题

LINUX之安装交叉编译工具链问题

NDK交叉编译之自定义工具链

Ubuntu配置交叉编译环境(配置交叉编译工具链)配置arm-linux-gcc交叉编译工具链(添加交叉编译工具链(toolchain)到环境变量)

Ubuntu配置交叉编译环境(配置交叉编译工具链)配置arm-linux-gcc交叉编译工具链(添加交叉编译工具链(toolchain)到环境变量)

Linux下获取arm的交叉编译工具链