个人工具

Crosstool-ng制作交叉编译工具链

来自Ubuntu中文

Tonghuix讨论 | 贡献2011年5月13日 (五) 15:29的版本 配置自己的交叉编译器

跳转至: 导航, 搜索

之所以用crosstool-ng是因为crosstool-ng是新的用来建立交叉工具链的工具,它是crosstool的替换者。crosstool的gcc版本只能到4.1.1,无法编译版本高于2.6.29的linux内核。而crosstool-ng一直保持着更新,现在最新能够建立 gcc 4.3.2版本,可用来编译最新内核。

编译的系统环境是 ubuntu 10.10 + crosstool-ng 1.11.1

目标平台 ARMv4t, arm9tdmi

配置ubuntu编译环境

安装编译所需的包

 sudo apt-get install sed bash cut dpkg-dev bison flex patch texinfo automake m4 libtool stat cvs websvn tar gzip bzip2 lzma readlink libncuses5-dev bison flex texinfo automake libtool patch gcj cvs cvsd gawk -y

安装结束以后就可以用了。

如果后面出现编译错误,再增加相应的包即可

安装crosstool-ng

  1. 首先从官方网站上下载crosstool-ng的源码包http://ymorin.is-a-geek.org/download/crosstool-ng/crosstool-ng-1.11.1.tar.bz2
  1. 将此源码包解压缩并编译安装
 tar xvjf crosstool-ng-1.11.1.tar.bz2
 cd crosstool-ng--1.11.1
 make
 sudo make install
  1. 如果一切正常,则ct-ng命令就可以用了

注:编译的时候如果出现错误,可以利用apt-get的方式安装相应的包即可

配置自己的交叉编译器

crosstool-ng可以配置各种平台的交叉编译器,也可以构建符合自己实用条件的个性编译器。下面以ARM平台为例,制作具有一定通用性的交叉编译器。这里我们从一个现成的编译器配置开始,用例子里的arm-unknown-linux-gnueabi作为配置的基础,然后来做一个交叉编译器。

将crosstool-ng源码包中samples/arm-unknown-linux-gnueabi/下的crosstool.config拷贝到源码包主目录下,在源码包主目录下执行

cp samples/arm-unknown-linux-gnueabi/crosstool.config .config

然后执行:

ct-ng menuconfig

进入配置菜单,与linux内核很类似\\ 先检查一下

Target options  --->
    Target Architecture (arm)  ---> # 注意看这项是不是ARM平台
    ......
    Floating point: (software)  ---> # 对于很多ARM架构CPU来说是不支持硬浮点运算的,所以选择软件方式有更好的兼容性
    ......
    [*] Use EABI                            # 是否实用EABI方式,对某些指令采用异常的方式来处理(如除法等)

自动下载和编译

下载

安装交叉编译器和测试

安装