TQ2440 学习笔记—— 8、自己制作工具链

本文详细介绍了如何基于gcc和glibc/uClibc制作工具链,通过crosstool和buildroot进行编译。重点讨论了uClibc相较于glibc的大小、兼容性和适用场景,并提供了基于crosstool-0.43.tar.gz的编译工具链步骤及注意事项。此外,文章还指导读者修改关键脚本文件以适应不同需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(韦东山——嵌入式Linux 应用开发完全手册)

自己编译工具链:

如果要基于gcc 和glibc 来制作工具链,可以使用crosstool 来进行编译;

如果要基于gcc 和uClibc 来制作工具链,可以使用buildroot 来进行编译。

uClibc 比 glibc 小,在已有的接口上是兼容的,更适用于嵌入式操作系统。但是uClibc 并没有包括glibc 中的所有接口实现,因此有些应用可能在uClibc 中不能编译。

基于这个原因,采用gcc ,当对系统比较熟悉后,或者在开发资源很瘦限制的产品时,可以使用uClibc。


使用crosstool -0.43.tar.gz 工具来编译工具链,它运行时,会自动从网上下载源码,然后编译,当然我们也可以自己下载源码,在运行crosstool。crosstool 官方网站为http://kegel.com/crosstool/,可以参考其中的crosstool-how to .html 选择、配置、编译工具链。


步骤:

一、修改crosstool 脚本微笑

a、执行以下命令进行解压缩

$ tar xzf crosstool-0.43.tar.gz    【为.gz文件,使用gzip方式处理,即用xzf】


b、打补丁

把它复制到crosstool 的补丁目录下:

命令  $ cp glibc-2.3.6-version-info.hr_err.patch crosstool-0.43/patchs/glibc-2.3.6/

然后将执行crosstool-0.43 目录下的demo-arm-softfloat.sh 脚本来进行编译,内容如下:

注意:关于VI 中显示行号的方法:在命令行模式下(也有称为尾行模式的)

1、显示当前行行号,在VI的命令模式下输入——:nu

2、显示所有行号,在VI的命令模式下输入——:set nu



第7行的TARRBALLS_DIR 表示源码存放位置。

第8行的 RESULT_TOP 表示编译结果存放的位置。

第10行的GCC_LANGUAGES 表示制作出来的工具链支持C、C++语言,如果要支持其他语言,可以在里面增加。比如下面一行表示支持Java:GCC_LANGUAGES = " c, c++,java"

第26~29行可知,可以选择多种gcc、glibc 版本。我们选择gcc-3.4.5 和 glibc-2.3.6。 

执行demo-arm-softfloat.sh 脚本后,它将根据arm-softfloat.dat、gcc-3.4.5-glibc-2.3.6.dat 这两个文件中定义的环境变量调用all.sh 脚本进行编译。

gcc-3.4.5-glibc-2.3.6.dat  文件指明了要下载或使用的文件。


需要更改demo-arm-softfloat.sh、arm-softfloat.sh、all.sh 这3个文件。

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


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

 TARGET=arm-softfloat-linux-gnu 改为:  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
 PREFIX=${PREFIX-$RESULT_TOP/$TOOLCOMBO/$TARGET}
改为

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

二、编译、安装工具链
执行以下命令:
$ cd crostool-0.43/
./ demo-arm-softfloat.sh
编译2、3个小时后,将在/work/tools/目录下生成gcc-3.4.5-glibc-2.3.6 子目录,交叉编译器、库、头文件都包含在里面。设置PATH 环境变量即可使用。
使用下面命令测评以下:
$ arm-linux-gcc -v

按照流程走了一遍,还是挺有收获的!完毕!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值