制作自己的GNU交叉编译链
Create my GNU cross compilation toolchain
————————————————————
编译简明教程
1. 下载需要的文件
-
下载 binutils。版本关系不大,修复错误用。
-
下载 gmp。 和需要的GCC版本有关。
-
下载 mfpr。 和需要的GCC版本有关。
-
下载 mpc。 和需要的GCC版本有关。
-
下载 cloog (可选)。与目标公司设计有关。
-
下载 isl (可选)。与目标公司设计有关。
-
下载glibc 。(和目标公司有关)。
-
下载gcc。(和目标平台有关)。
-
下载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。