Chinaunix首页 | 论坛 | 博客
  • 博客访问: 488721
  • 博文数量: 121
  • 博客积分: 4001
  • 博客等级: 上校
  • 技术积分: 1390
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-13 21:48
文章分类

全部博文(121)

文章存档

2011年(4)

2010年(11)

2009年(106)

我的朋友

分类: LINUX

2010-04-14 15:17:37

如果要基于gcc和glibc来制作工具链,可以使用crosstool来进行编译;如果要基于gcc和uClibc来制作工具链,可以使用buildroot来进行编译。若不借助这些工具,编译过程是非常麻烦的。uClibc比glibc小,在已有的接口上是兼容的,更适合于嵌入式系统。但是uClibc并没有包括glibc中所有的接口实现,因此有些应用可能在uClibc中不能编译。基于这个原因,我们使用glibc,当对系统很熟悉后,或是在开发资源很受限的产品时,可以使用uClibc。

    可以先自己下载源码,再运行crosstool。官方网站为,也可以参考其中的crosstool-how to.html选择、配置、编译工具链。

    我们有现成的文件,在/work/tools/create_crosstools目录下的crosstool-0.43.tar.gz工具来编译工具链,它运行时,会自动从网上下载源码,然后编译。

一、修改crosstool脚本

    执行以下命令解压缩:

    $ tar xzf crosstool-0.43.tar.gz

    glibc-2.3.6-version-info.h_err.patch是个补丁文件,它修改glibc-2.3.6/csu/Makefile里面的一个小错误,导致自动生成的version-info.h文件编译出错。将其复制到crosstool的补丁目录下:

    $ cp glibc-2.3.6-version-info.h_err.patch crosstool-0.43/patches/glibc-2.3.6/

 

    需要修改crosstool-0.43目录下的demo-arm-softfloat.sh、arm-softfloat.dat、all.sh这三个文件。

    1.修改demo-arm-softfloat.sh,修改后的内容如下:

07 TARBALLS_DIR=/work/tools/create_crosstools/src_gcc_glibc (源码存放的位置)

08 RESULT_TOP=/work/tools                                   (编译结果存放的位置)

    2.修改arm-softfloat.dat,修改如下

02 TARGET=arm-softfloat-linux-gnu  

改为: 

02 TARGET=arm-linux

    它表示编译出来的工具样式为arm-linux-gcc、arm-linux-ld等,这是常用的名字。

    3.修all.sh。

    如果现在就执行demo-arm-softfloat.sh,最终结果将存放在/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux目录下。为简洁起见,修改all.sh,将结果存放在/work/tools/gcc-3.4.5-glibc-2.3.6目录下。

70 PREFIX=${PREFIX-$RESULT_TOP/$TOOLCOMBO/$TARGET}

改为:

70 PREFIX=${PREFIX-$RESULT_TOP/$TOOLCOMBO}

 

二、编译、安装工具链

    执行以下命令:

    $ cd crosstool-0.43/

    $ ./demo-arm-softfloat.sh

    注意:如果看到‘Don'\''t run all.sh or crosstool.sh as root, it'\''s dangerous’,就切换用户,以其他非 root 用户重新登陆,若遇到提示 权限不够 或是 无法进入目录时,su 一下就可以了。

    编译两三个小时后(我的只用了不到2小时),将在/work/tools/目录下生成gcc-3.4.5-glibc-2.3.6子目录,交叉编译器、库、头文件都包含在里面。

 

    设置PATH环境变量:

    $ export PATH=$PATH:/work/tools/gcc-3.4.5-glibc-2.3.6/bin

    这使得可以直接运行这个目录下的程序,而不需要制定目录位置。

 

    为了不要每次使用时都手工设置PATH,可以在/etc/environment中修改PATH的值:

    $ vim environment

    PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/work/tools/gcc-3.4.5-glibc-2.3.6/bin"

   

    最后可以测试一下:

    $ arm-linux-gcc -v

阅读(1883) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~