莱因电博

Li-e.cn

Li Internet Electronic Blog
@rss

制作自己的GNU交叉编译链

Create my GNU cross compilation toolchain

————————————————————

编译简明教程

1. 下载需要的文件

  1. 下载 binutils。版本关系不大,修复错误用。

  2. 下载 gmp。 和需要的GCC版本有关。

  3. 下载 mfpr。 和需要的GCC版本有关。

  4. 下载 mpc。 和需要的GCC版本有关。

  5. 下载 cloog (可选)。与目标公司设计有关。

  6. 下载 isl (可选)。与目标公司设计有关。

  7. 下载glibc 。(和目标公司有关)。

  8. 下载gcc。(和目标平台有关)。

  9. 下载linux内核。和目标公司有关。

一步到位下载:

Arm GNU Toolchain Downloads – Arm Developer

2. 配置

温馨提示:每个机器的配置都是不同的,特别是公司定制的设备。可以自己配置自己需要的部分,节省编译时间。

  • –例如:gcc –disable-multilib 可以跳过multilib选项

    这个是多平台实用,一般GCC只适配自己的这个设备,别人的不好用,不需要

    一般可以 disable isl、nls

    建议打开 enable shared 选项,这个是共享库

相关英文提示:

host 是目标主机,本机电脑使用不用配置

target 是目标平台,arm-none-eabi 和 arm-none-linux-gnueabihf 不要搞错。

**温馨提示:有关编译配置的知识需要非常了解arm和gnu套件的工程师,如果不了解千万不要尝试。**这个没有固定的配置,一般也不需要如何设置配置,只有定制的设备需要做出相应配置。

3. 编译

按下载步骤,将文件编译到同一个output目录

配置完毕后直接make编译,完了就安装。

libc和gcc有一个循环依赖的问题,gcc需要编译多次,第一次用本机电脑编译,到第二次先安装内核文件,用编译出的libc联合编译

4. 总结

小平台使用newlib版本的会快。

只有自己的GCC可以适配自己的平台,别人的平台的GCC关键地方都不好用。例如粤嵌科技的GEC6818,它们给的GCC是没有multilib的,甚至没有多余的multimedia,以至于音视频开发就是个鸡肋。需要别的玩意就需要重新制作一个GCC。

(C) 2019 - 2024 Li-e.cn莱因电博(立网电子博客) | Powered by Vercel , based on Hugo with Gists theme.