红联Linux门户
Linux帮助

在fedora 9下使用crosstool构建交叉编译链

发布时间:2008-09-23 20:41:23来源:红联作者:yzs
作者:拾得 http://blog.sina.com.cn/lhding

前面几个星期一直在尝试按照http://book.csdn.net/bookfiles/481/10048116751.shtml上的介绍学习一下独立的交叉编译链构建。

很可惜,最后没有成功,问题出在glibc编译的时候,不停的有错误报出来,后来google一些资料,是glibc-2.3.2

自身有一些bug。根据下面一个参考链接介绍,在用crosstool编译的时候会自动加一些补丁。

从一个朋友的网页上看到“在独立构建交叉编译链上浪费太多时间不值得”,决定转向使用crosstool。

首先到http://kegel.com/crosstool/crosstool-0.43.tar.gz 下载最新版本的crosstool.
参考:http://blog.chinaunix.net/u1/34474/showart_361474.html

使用的demo是demo-arm-xscale.sh

下载文件:
linux-2.6.15.4.tar.bz2
binutils-2.16.1.tar.bz2
gcc-4.1.0.tar.bz2
glibc-2.3.2.tar.bz2
glibc-linuxthreads-2.3.2.tar.bz2
linux-libc-headers-2.6.12.0.tar.bz2

(注:第一个可以从ftp.kernel.org下载,后面四个可以从ftp.gnu.org下载,最后一个要到ftp://ftp.lfs-matrix.net/pub/linux-libc-headers/linux-libc-headers-2.6.12.0.tar.bz2下载.)

在编译过程中碰到的值得记录的问题有:

1、没有更改arm-xscale.dat文件,导致输出的gcc编译器名字巨长,可以参考

http://book.csdn.net/bookfiles/481/10048116751.shtml,更改配置文件部分选项如下:

TARGET=arm-linux- # 编译生成的工具链名称
TARGET_CFLAGS="-O" # 编译选项
(并未经过验证)

2、关于gcc的版本问题,直接执行./demo-arm-xscale.sh,出现gcc版本过低的问题,而事实上fedora 9上的gcc版本是4.3。问题的根源在于crosstool执行gcc编译的时候要进行版本匹配,过高的版本不支持。曾尝试重新安装低版本的gcc,却一直没有成功,后来发现可以直接更改crosstool的patch文件,就放弃了继续安装低版本的gcc。

改动方法:http://blog.chinaunix.net/u2/72383/showart_1076976.html

修改crosstool-0.43/patches/glibc-2.3.2/下的glibc-2.3.3-allow-gcc-4.0-configure.patch文件,将"3.[2-9]*|4.[01]*"改为"3.[2-9]*|4.*"就OK 了。

3、关于验证是否安装成功:
首先找到arm gcc的安装目录,应该在$dstdir/gcc-4.1.0-glibc-2.3.2/arm-xscale-linux-gnu/bin下面,将该目录加入PATH环境变量,添加方法:

首先备份/etc/bashrc,然后通过#chmod 777 bashrc 命令改变其只读属性,在最后一行加入环境变量记录:

export PATH=$dstdir/gcc-4.1.0-glibc-2.3.2/arm-xscale-linux-gnu/bin:$PATH

注意,$dstdir用使用绝对路径代替,这里只是为了表述的方便。

然后进入$dstdir/gcc-4.1.0-glibc-2.3.2/arm-xscale-linux-gnu/tmp,使用

#arm-xscale-linux-gcc -o hello hello.c
#file hello

hello: ELF 32-bit LSB executable, ARM, version 1 (ARM), for GNU/Linux 2.4.3,

dynamically linked (uses shared libs), not stripped

验证编译成功。

全部编译时间长度大概两个小时。
文章评论

共有 0 条评论