利用crosstools-ng编译自己的交叉工具链

来源:互联网 发布:js 设置input的只读 编辑:程序博客网 时间:2024/06/05 19:43

crosstools-ng下载地址

http://ymorin.is-a-geek.org/download/crosstool-ng/

同时每个版本都有自己对应的补丁,补丁下载地址

http://ymorin.is-a-geek.org/download/crosstool-ng/01-fixes/


编译环境:ubuntu10.10 + crosstools-ng-1.9.3

目标平台:armV7 cortex-A8  FS-S5PC100

一、配置ubuntu编译环境

编译源码前,必须先安装下面的软件:

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

二、配置crosstools-ng-1.9.3

1.先建立一个工作目录

mkdir ~/mytool

2.将下载的crosstools-ng-1.9.3.tar.bz2解压到mytool目录下

tar xvf crosstools-ng-1.9.3.tar.bz2 /home/linux/mytool/

3.进入mytool目录建立编译交叉编译器的工作目录crosstool-build和交叉编译器的安装目录crosstool-install

cd ~/mytool

mkdir crosstool-build

mkdir crosstool-install

4.cd crosstools-ng-1.9.3

如果有补丁打上补丁,我编译时还没有1.9.3的补丁。

  ./configure --prefix=/home/linux/mytool/crosstool-install  //配置crosstool-ng的安装路径。

make

sudo make install   //这一步的时,可能会出现下面的提示信息:For auto-completion, do not forget to install 'ct-ng.comp' into your bash completion directory (usually /etc/bash_completion.d) .无需理会

echo "PATH=$PATH:/home/linux/mytool/crosstool-install/bin">>~/.bashrc   //为后面调用ct-ng命令增加环境变量

./ct-ng help   

这时会打印出一段信息,说明安装成功了。

三、配置自己的交叉编译链

cd ~/mytool/crosstool-build

cp ../crosstool-ng-1.9.3/samples/arm-unknown-linux-gnueabi /* ./    //拷贝默认的配置文件到编译的工作目录。

mv   crosstool.config .config

cd ../crosstool-install/bin/

./ct-ng menuconfig     //进入menuconfig进行配置

Paths and misc options  --->
    ......
    (/home/linux/mytool/crosstool/src)   Local tarballs directory  # 指定制作编译器所需要的源码包的下载存放,可以修改成任意位置,请注意权限。现在指定到~/src下。
    ......
    (/home/linux/mytoo/x-tools/${CT_TARGET}) Prefix directory     # 制作好的编译器所放置的目录    //建议保留${CT_TARGET},我也不知道原因 通过实际操作,如果不加的话,x-tools目录下的文件会很乱,导致后面添加交叉编译器环境变量的时候,会加不进去。很郁闷 。

  *** Downloading ***                                               
         [ ] Forbid downloads                                                  
         [*]   Force downloads     //  如果网络还可以的话 建议此处这样设置,因为如果事先下载好源码包的话 会因为版本 格式不匹配 而编译失败。亲身经历过的。


arget options  --->
    Target Architecture (arm)  ---> # 注意看这项是不是ARM平台
    ......
    Floating point: (software)  ---> # 对于很多ARM架构CPU来说是不支持硬浮点运算的,所以选择软件方式有更好的兼容性
    ......

    [*] Use EABI                            # 是否实用EABI方式,对某些指令采用异常的方式来处理(如除法指令),建议选中


Toolchain options  --->
     .....
     (XXX) Tuple's vendor string  # 这里可以修改成你自己的个性化名称,最后会生成形如arm-yourname-linux-gnueabi这样的编译器前缀 


四、自动下载和编译  

./ct-ng build

速度要根据网络和机器的配置而定,我单核台式机,10M网通宽带花了两个小时

五、测试交叉编译器

cd ~/mytool/x-tool/arm-youname-linux-gnueabi/bin/

./arm-youname-linux-gnueabi-gcc -v

这时会打印出一段信息,说明编译成功了。

六   增加环境变量

export PATH=$PATH:/home/linux/x-tools/arm-youname-linux-gnueabi/binsource ~./bashrc 工作结束。参考文章:http://blog.csdn.net/whw05567013856152985/article/details/7334754