以前都是用别人制作好的交叉编译工具。
这次尝试一下自己做。参考了网上一些文章,结合自己的实际环境,制作成功了。制作过程记录如下:
HOST 系统:Ubuntu 10.04
Linux内核: linux-2.6.38.12
获取crosstool-ng源码包:
http://crosstool-ng.org/download/crosstool-ng/
我选了下面这个版本:
crosstool-ng-1.9.0.tar.bz2 | 2010-Nov-03 18:11:24 | 1.7M | application/x-bzip |
tar xvf crosstool-ng-1.9.0.tar.bz2 得到crosstool-ng-1.9.0文件夹
接下来建立一个存放crosstool的文件夹,我的是/home/wsn/my_crosstool-ng
然后进入这个crosstool-ng-1.9.0文件夹
./configure --prefix=/home/wsn/my_crosstool-ng make
这时很可能你的系统会缺少很多必要的工具,所以都得一一安装,这样make才能通过
缺少的工具,可以通过sudo apt-get install xx来安装,下面是很可能缺少的:
1. bison
2. flex
3. makeinfo (应该是texinfo)
4. automake
5. libtool
6. cvs
7. cur
8. gcj
9. g++ 等,
通过之后, make install
然后,设置系统的环境:
sudo gedit /etc/profile
在最后加入:
export PATH=$PATH:/home/wsn/my_crosstool-ng/bin
退出,生效环境profile:
source /etc/profile
把crosstool-ng-1.9.0/sample/arm-unknown-eabi/crosstool.config
拷贝到my_cosstool-ng下,重命名为.config
这样,需要重新打开一个termial,输入 ct-ng help,应该有以下类似输出:
GNU Make 3.81 Copyright (C) 2006 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. This program built for i486-pc-linux-gnu
说明关键的一步已经成功了,接下来进行相关配置了。
cd /home/wsn/my_crosstool-ng ct-ng menuconfig
进行工具链的menuconfig
根据自己的目标CPU进行设置,比如CPU 是s3c2440的话,主要配置一下几个选项就行了,其他默认
Target options --> arm
Architecture level --> armv4t
Floating point --> software
其中:
Tuple's vendor string 中可以更改自己平台的名称,默认是unknown
配置好后最后保存:
Save an Alternate Configuration file
接下来就是漫长的编译了
ct-ng build
这个过程太煎熬了,当时耗时3个多小时, 真是汗颜...
wsn@wsn-laptop:~/bellsent/my_crosstool-ng$ ct-ng build [INFO ] Performing some trivial sanity checks [INFO ] Build started 20120617.213312 [INFO ] Building environment variables [EXTRA] Preparing working directories [EXTRA] Installing user-supplied crosstool-NG configuration [EXTRA] ================================================================= [EXTRA] Dumping internal crosstool-NG configuration [EXTRA] Building a toolchain for: [EXTRA] build = i686-pc-linux-gnu [EXTRA] host = i686-pc-linux-gnu [EXTRA] target = arm-Davinci-linux-gnueabi [EXTRA] Dumping internal crosstool-NG configuration: done in 0.14s (at 00:02) ...
最后编译得出的交叉工具在../x-tools/下
相关参考:
http://blog.csdn.net/HumorRat/article/details/5615298