用crosstool-ng构建自己的交叉编译工具链


        交叉编译器是编译器的一种,它运行在一种平台下却生成另一种平台运行的二进制文件。

        当前构建交叉编译器的方法有很多,这里介绍一种方便快捷的方式:使用crosstool-ng。它提供了一系列的脚本,搭建了一个菜单式的交互接口,让我们可以自由配置所需要的选项,然后根据配置自动下载源码、打补丁、配置,最终生成自己定制的交叉编译工具链。

首先下载安装crosstool-ng

1.       从crosstool-ng官网下载安装包,笔者写这篇文章时,选择的是当前的最新版本V1.21.0。
wgethttp://crosstool-ng.org/download/crosstool-ng/crosstool-ng-1.21.0.tar.xz

2.       解压下载的源码包,并进入源码目录,执行编译三部曲:
tar vxf crosstool-ng-1.21.0.tar.xz

cd crosstool-ng-1.21.0

3.       执行编译三步曲
./configure --prefix=/opt/cross
make
make install

4.       确认/opt/cross/bin已经安装,当然你可以用你习惯的路径替代/opt/cross 

构建交叉编译工具链

1.       在合适的地方新建一个crosstool-ng工作目录。这个目录将会存储工具链的配置文件,自动下载的文件,构建过程中产生的一些中间文件。缺省条件下,最终生成的工具链不会存放在这里(当然这个是可以配置的)。

需要注意的是:必须保留足够的硬盘空间(在笔者的环境下,最终消耗了5.2G的空间),其次,crosstool-ng不能用root用户构建工具链,所以要确保这执行的用户对这个新建的目录有写权限。

mkdir -p /opt/crosstool

2.       进入前面一步建立的目录:
cd /opt/crosstool

3.       执行 ct-ng menuconfig进入配置界面:
ct-ng menuconfig


4.       选择‘Paths and misc options’菜单,激活’  Try features marked as EXPERIMENTAL’选项,这一步很重要

5.       在‘Paths and misc options’ 菜单下,修改‘Directory containing customsource components’值,设置为你想要最终存放工具链的目录。

6.       返回主菜单,选择‘Target options

7.       ‘Target architecture ’选项选择‘ arm’;‘Endianness ’选项选择‘ Little endian’;‘Bitness’选项选择‘32-bit’。

8.       返主菜单,选择‘Operating system’(跳过‘Toolchain options’,这里使用缺省选项就够了)

9.       ‘Target OS’选择‘linux’, ‘Linuxkernel version’选项中选择你所使用的内核版本

10.   返回主菜单,选择‘Binary utilities

11.   选择你需要的版本,笔者直接选择最高版本(如果需要编译Linaro版本,请先激活‘Show Linaro versions’选项)。

12.   返回主菜单,选择‘C compiler

13.   选择你所使用的GCC版本(笔者选择5.1.0,如果需要编译Linaro版本,请先激活‘Show Linaro versions’选项),因为笔者需要使用GCC的一个新特性,所以激活‘Compile libsanitizer’选项,一般情况下,保持缺省值就够了。

14.   其它选项用缺省值,退出并保存配置工具

15.   执行ct-ngbuild编译工具链
ct-ng build

16.   休息一会…编译是比较耗时,确保过程中网络不会中断…

17.   把你的工具链目录设置到$PATH 环境变量中

18.    可以用新的工具链编译代码了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值