您的位置:首页 > 运维架构 > Linux

Linux:crosstool-ng制作自己的交叉编译工具

2012-06-17 16:30 537 查看
以前都是用别人制作好的交叉编译工具。

这次尝试一下自己做。参考了网上一些文章,结合自己的实际环境,制作成功了。制作过程记录如下:

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.bz22010-Nov-03 18:11:241.7Mapplication/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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息