Ubuntu 11.04下运用crosstool-ng-1.9.0 建立arm-linux 交叉工具链

《一日二十四挨踢www.1024it.net》站文章在未特殊说明下默认为原创性文章。

在未有正式书面授权情况下,请勿转载。谢谢配合

 

 

 系统环境:

Linux ubuntu 2.6.38-16-generic #67-Ubuntu SMP Thu Sep 6 18:00:43 UTC 2012 i686 i686 i386 GNU/Linux


crosstool-ng版本:

crosstool-ng-1.9.0

 

    以前由于工作需要,要搭建一套交叉工具链。在网上搜集了大量资料,自己按部就班做了一遍,最终成功搭建。今天总结了安装方法和具体步骤,分享给大家。希望对大家有所帮助。

    我们选择开源工具crosstool-ng,来制作自己的交叉编译工具链。

在制作交叉编译工具之前要安装各种各样的编译工具,因为Ubuntu系统的方便性,我们可以通过具体的命令在线安装所需的软件。下面将是具体的制作交叉编译的过程。

一、安装所需的工具包

$ sudo apt-get install g++ libncurses5-dev bison flex texinfo automake libtool patch gcj cvs cvsd gawk curl

二、下载交叉编译工具所用的文件

在编译工具链时,要依赖许多工具包,如果而且不同版本的gcc,所依赖的工具包的版本也不同,如果你在编译之前知道之间的关系,可以提前下载相应的版本;如果不知道,还是让其自己在线下载。


三、安装crosstool-ng-1.9.0.tar.bz2的工具。

安装所需的crosstool-ng-1.9.0,你可在这个地址http://crosstool-ng.org/old_news下载crosstool-ng的工具包。下面是详细的安装步骤:

$cd ~/workspace

$mkdir crosstool_workspace

$cd crosstool_workspace

$cp ~/Downloads/crosstool-ng-1.9.0.tar.bz2 .

$tar xvf crosstool-ng-1.9.0.tar.bz2

考虑到后续要用的各种目录,我这里先建立好所需的目录

$mkdir crosstool_build crosstool_install src tools

目录编译目录和源码包目录,这几个目录和crosstool-ng-1.9.0目录并列,如下图所示:

$ cd crosstool-ng-1.9.0

$./configure --prefix=/home/yalong/workspace/crosstool_workspace/crosstool_install

如果写成~/workspace/crosstool_workspace/crosstool_install,就会有如下提示:

configure成功的状态,如下:

Ubuntu 11.04下运用crosstool-ng-1.9.0 建立arm-linux 交叉工具链_第1张图片

Ubuntu 11.04下运用crosstool-ng-1.9.0 建立arm-linux 交叉工具链_第2张图片

make & sudo make install结果如下:

Ubuntu 11.04下运用crosstool-ng-1.9.0 建立arm-linux 交叉工具链_第3张图片

$cd ../crosstool_build/

$ cp ../crosstool-ng-1.9.0/samples/arm-unknown-linux-gnueabi/* .

$mv crosstool.config .config (.config是隐藏文件)

$ ../crosstool_install/bin/ct-ng menuconfig

此刻会出现一个图形配置界面,在此配置界面下,可以按照自己开发板的实际情况来进行配置:

1、设定源码包路径和交叉编译器的安装路径。

Paths and misc options --->

(/home/yalong/workspace/crosstool_workspace/src) Local tarballs directory保存源码包路径

(/home/yalong/workspace/crosstool_workspace/tools) Prefix directory交叉编译器的安装路径

2、修改交叉编译器针对的构架

Target options --->

*** Target optimisations ***

(armv5TE) Architecture level

(arm9tdmi) Emit assembly for CPU

(arm920t) Tune for CPU

3、增加编译时的并行进程数,以增加运行效率,加快编译。

Paths and misc options --->

*** Build behavior ***

(2) Number of parallel jobs

这个数值不宜过大,应该为CPU数量的两倍。

4、关闭JAVA编译器

C compiler --->

*** Additional supported languages: ***

[ ] Java

5、一些个性化的修改(可以不修改)

Toolchain options --->

*** Tuple completion and aliasing ***

(yl) Tuple's vendor string

这样产生的编译器前缀就是:arm-yl-linux-gnueabi-

C compiler --->

(crosstool-NG-${CT_VERSION}-yl) gcc ID string

配置好以后保存。

四、编译

如果你下载了源码包,编译前要将下载好的源码包放在src的目录下。

$cp ~/Download/tar/* ~/crosstool/src

现在开始编译

$cd ~/crosstool/crosstool-build //进入crosstool-build目录下

$ ../crosstool_install/bin/ct-ng build //开始编译交叉工具链

现在已经进入了编译环节,如果一切顺利,大概将近两个小时就会完成编译的任务,此刻在初始新建的crosstool目录下就会生成一个tools的目录,我们的交叉工具链就在tools目录下的bin目录下面,如下图所示:

Ubuntu 11.04下运用crosstool-ng-1.9.0 建立arm-linux 交叉工具链_第4张图片




遇到错误及解决方法:

问题一:

[ERROR] make[1]: *** [configure-gcc] Error 1

[ERROR] Build failed in step 'Installing static core C compiler'

[ERROR] Error happened in '/home/yalong/workspace/crosstool_workspace/crosstool_install/lib/ct-ng-1.9.0/scripts/functions' in function 'CT_DoExecLog' (line unknown, sorry)

[ERROR] called from '/home/yalong/workspace/crosstool_workspace/crosstool_install/lib/ct-ng-1.9.0/scripts/build/cc/gcc.sh' at line # 289 in function 'do_cc_core'

[ERROR] called from '/home/yalong/workspace/crosstool_workspace/crosstool_install/lib/ct-ng-1.9.0/scripts/build/cc/gcc.sh' at line # 52 in function 'do_cc_core_pass_1'

[ERROR] called from '/home/yalong/workspace/crosstool_workspace/crosstool_install/lib/ct-ng-1.9.0/scripts/crosstool-NG.sh' at line # 597 in function 'main'

[ERROR] Look at '/home/yalong/workspace/crosstool_workspace/tools/build.log' for more info on this error.

[ERROR] (elapsed: 39:21.50)

[39:22] / make: *** [build] Error 2

解决方法:

我给menuconfalias添加了别名,导致出现此错误。

问题二:

[ERROR] Error happened in '/home/mcw-jks-a8/workspace/crosstool_workspace/crosstool-install/lib/ct-ng-1.9.0/scripts/functions' in function 'CT_DoExecLog' (line unknown, sorry)

[ERROR] called from '/home/mcw-jks-a8/workspace/crosstool_workspace/crosstool-install/lib/ct-ng-1.9.0/scripts/build/cc/gcc.sh' at line # 443 in function 'do_cc'

[ERROR] called from '/home/mcw-jks-a8/workspace/crosstool_workspace/crosstool-install/lib/ct-ng-1.9.0/scripts/crosstool-NG.sh' at line # 597 in function 'main' ”

解决方法:

此错误最大可能性是对应安装包有问题。

你可能感兴趣的:(Ubuntu 11.04下运用crosstool-ng-1.9.0 建立arm-linux 交叉工具链)