利用crosstool工具构建嵌入式Linux交叉编译工具链
一、什么是交叉编译工具链?
交叉编译工具链就是为了在一个平台体系结构下(如X86 PC机)能编译,链接,处理和调试另一个平台体系结构下(如ARM)的程序,使得编译生成的程序能够在另一平台下运行。简单地说,就是在一个平台上生成另一个平台上的可执行代码。
二、本次制作交叉编译工具链使用软件:
交叉编译工具链是一个由编译器、连接器和解释器组成的综合开发环境,交叉编译工具链主要由binutils、gcc和glibc 3个部分组成。
Linux使用的工具链软件是:Binutils,gcc,glibc,gdb。
其中binutils是二进制程序处理工具。gcc是编译器。glibc是应用程序编程的函数库文件软件包。gdb是调试工具。
三、使用环境:
以X86平台,虚拟机VMware Workstation V5.5.1,RHEL4.0来建立arm交叉编译工具链。
四、开始制作:
1、准备资源
首先从网上下载所需资源文件linux-2.6.27.tar.bz2、binutils-2.15.tar.bz2、gcc-3.3.6.tar.bz2、 glibc- 2.3.2.tar.bz2、glibc-linuxthreads-2.3.2.tar.gz和linux-libc-headers- 2.6.12.0.tar.bz2。然后将这些工具包文件放在新建的/home/downloads(刚开始文件名是建立成download,后来改成downloads)目录下,最后在/home目录下解压crosstool-0.42.tar.gz,命令如下:
解压crosstool-0.43压缩包:
2、建立脚本文件
接着需要建立自己的编译脚本,起名为arm.sh,为了简化编写arm.sh,寻找一个最接近的脚本文件demo-arm.sh作为模板,www.britepic.org然后将该脚本的内容复制到arm.sh,修改arm.sh脚本,具体操作如下:
修改后的arm.sh脚本内容如下:
找到这一句#eval 'cat arm.dat gcc-3.3.6-glibc-2.3.2.dat' sh all.sh –notest,然后将其注释号#去掉(这一句为编译工具链的执行语句)
其中一些解释:
TARBALLS_DIR=/home/mike/downloads # 定义工具链源码所存放位置。
RESULT_TOP=/opt/crosstool # 定义工具链的安装目录
GCC_LANGUAGES="c,c++" # 定义支持C, C++语言