(一)下载与安装
1、wget http://crosstool-ng.org/download/crosstool-ng/crosstool-ng-1.25.0.tar.bz2
2、解压后进入源码目录编译安装:
(1)./configure
在此过程中会出现插件未安装的报错信息,然后根据提示安装相应的插件即可,一般如下:
A、configure: error: missing required tool: gperf
解决办法:sudo apt-get install gperf
B、configure: error: missing required tool: bison
解决办法:sudo apt-get install bison
C、configure: error: missing required tool: flex
解决办法:sudo apt-get install flex
D、configure: error: missing required tool: makeinfo
解决办法:sudo apt-get install texinfo
E、configure: error: missing required tool: help2man
解决办法:sudo apt-get install -y help2man
注意:如果提示缺少 libtool,但执行安装命令 sudo apt-get install libtool 后仍然报错,则执行安装libtool-bin:
sudo apt-get install libtool-bin 问题解决
(2)直到上述操作无错误后,再分别执行 make
(3)sudo make install
(二)使用
1、创建生成目录 crosstool-build、src、x-tools:
(1)在源码目录下执行:ct-ng menuconfig,弹出配置界面如下:
(2)进入第一个选项卡,后可看到如下标红处,此处“Path”为在工具链构建过程中自动生成的目录,“src”目录为构建过程中需要的依赖库,此工具会自动执行下载到此目录,然后执行安装;“x-tools”目录为最终生成的工具链安装目录;这两个目录默认会生成在{HOME}路径下,若想生成在自己创建的路径下,需要修改配置即可
如下为最终生成的效果图:
(3)创建目录crosstool-build:将crosstool-ng源码包中 samples/arm-unknown-linux-gnueabi/crosstool.config拷贝到交叉工具链的输出目录crosstool-build下。
2、构建:此处以 S3C6410 为例
修改交叉编译工具针对的架构(S3C6410)
Target options—>
Target architecture(arm)
Endianness(Little endian)
Bitness(32-bit)
(armv6zk) Architecture level
(arm1176jzf-s) Emit assembly for CPU
Floating point(hardware FPU)
其它选项用缺省值,退出并保存配置工具
以上配置也可通过直接修改.config文件来完成
3、执行构建:ct-ng build,此过程时间较长,构建过程中会下载需要依赖的源码放到“src”目录下,在编译过程中会遇到以下报错:
报错原因是没有找到“zlib-1.2.12”这个安装包,查看编译过程中生成的log文件:
经过对比路径发现,上述http路径下并不存在此文件,在官网找到此文件在“https://zlib.net/fossils/”路径下:
将此安装包下载到本地路径,同时需要修改 menuconfig中的配置,按照如下配置即可:
关于上图“zlib”的配置:
工具中默认配置为第一项,表示自动下载最新的资源,但配置版本为“zlib-1.2.12”,此处选择“Custom location”自定义路径,然后指定“Custom source location”即可。
4、直到工具编译完成后,可在“x-tools”目录下看到生成的交叉编译链工具,可参见上图