linux x86 兼容性最高的交叉编译环境

不客气地说,在Linux x8 6 上构建交叉编译环境时,GNU工具链是必然的选择,而且兼容性确实是一流的。

让我们首先扩展最重要的事情。
GNU工具链本身是一个“综合性”的。
我们去年跑的嵌入式ARM项目直接使用x8 6 GCC,甚至没有改变编译选项就运行得很顺利。
另一点是它支持数量惊人的平台。
从十年前PowerPC架构上去年年底发布的新型RISC-V芯片来看,它可以在任何平台上使用。
还有另一个重要的细节。
例如,当你编译3 000行C++代码时,它可以自动优化为仅生成大约8 0%的汇编代码,效率极高。
说实话,挺混乱的,但很多人都没有注意。
封送时,必须手动添加 -marsh=armv7 -a 参数。
如果不添加它就会损坏。

一开始我以为用GCC就够了,后来发现我错了。
Buildroot和YoctoProject可以直接帮你打包编译器和库,节省大量时间。
例如,如果你正在做一个物联网项目,使用Buildroot选择ARM架构和WiFi驱动程序,两个小时就可以得到编译好的系统镜像。

最后提醒:YoctoProject虽然功能强大,但是配置文件就像迷宫一样,初学者很容易陷入配置层的困境。
建议大家先从Buildroot入手,熟练后再考虑YoctoProject。
很多人不注意这一点。

Linux下的交叉编译环境设置

由于嵌入式系统资源不足,交叉编译主要在上位机上完成。
Linux交叉编译的要点是: 1 、目标机的gcc编译器 2 、目标机的二进制工具binutil 3 、目标机的glibc4 标准库。
目标机器的内核头文件。

步骤: 1 .下载源码并指定安装路径。
2 . 编写binutil,指定目标机器的路径和类型。
3 、配置内核头文件并复制到安装目录。
4 、第一次编译gcc,生成最简单的gcc。
5 .交叉编译glibc并设置路径和编译器。
6 . 再次编译gcc,生成完整的交叉编译环境。

注意:第一次编译gcc时可能找不到stdio.h,必须修改文件gcc/config/arm/t-linux。