简介
crosstool-ng,全称是crosstool Next Generation,即下一代crosstool。crosstool是个交叉编译器的制作工具,但是做的不够好,于是有人(Yann E. MORIN)弄出了个更好的——crosstool-ng。crosstool-ng的特点:
支持menuconfig(类似于Linux内核配置)
支持众多的架构
可选多种不同的C库等模块
提供示例配置
支持多种主机编译环境:各种Linux发行版,Cygwin等
安装
1.从官网下载安装包
wget http://crosstool-ng.org/download/crosstool-ng/crosstool-ng-1.23.0.tar.xz
或者到crosstool-ng的下载页面进行下载:
http://crosstool-ng.org/download/crosstool-ng/
2.解压下载的源码,并进入源码目录
tar vxf crosstool-ng-1.23.0.tar.xz
cd crosstool-ng-1.23.0
3.执行编译三步曲,其中--prefix指明crosstool-ng的安装路径
./configure --prefix=/home/tools/cross
make
make install
在执行过程中可能会出现错误,提示缺少一些组件,可以根据提示进行相应软件的安装,下面列出一些必须的软件包:
apt-get install gperf bison flex texinfo help2man gawk automake libncurses5-dev
4.安装完成后添加环境变量
vim ~/.bashrc
将PATH=$PATH:/home/tools/cross/bin写入文件末尾。
source ~/.bashrc
制作交叉编译工具链
1.使用ct-ng help命令测试crosstool-ng是否安装成功。
2.使用ct-ng list-samples命令查看具有哪些默认配置。
3.以其中的arm-cortex_a8-linux-gnueabi配置为基础,进行一些自定义配置:
ct-ng arm-cortex_a8-linux-gnueabi
4.使用ct-ng menuconfig开始自定义。
Paths and misc options --->
Try features marked as EXPERIMENTAL:选中,有一些功能被标记为实验功能。
(${HOME}/src) Local tarballs directory :指定下载的源码保存的位置,根据自己情况修改为:/home/work/cross/crosstool/src。
(CT_PREFIX:-${HOME}/x-tools}/${CT_HOST:+HOST-${CT_HOST}/}${CT_TARGET} ) Prefix directory :指定交叉编译器的安装路径,根据自己情况修改为:/home/tools/${CT_TARGET}。
Force downloads:选中这个选项可以通过网络下载源码包覆盖已经下载好的不匹配的版本。
Target options --->
Floating point: (softfp (FPU)) :选中该选项,指定使用软浮点。
Toolchain options --->
(cortex_a8) Tuple's vendor string :设置自定义信息,设置后交叉编译器名为arm-cortex_a8-linux-gnueabi。
(arm-linux) Tuple's alias:设置别名,会给每个工具建立一个软链接,如:arm-linux-gcc 链接到到arm-cortex_a8-linux-gnueabi-gcc。
还有其他的选项可以配置,比如Linux系统版本、GCC版本、C库版本等。
5.使用ct-ng build命令开始制作交叉工具编译链。
6.完成后,交叉工具编译链的位置在/home/tools/${CT_TARGET}目录下,设置环境变量后,就可以使用制作好的交叉编译链了。