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

2019-07-13 04:54发布

(韦东山——嵌入式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
按照流程走了一遍,还是挺有收获的!完毕!