利用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++语言

相关推荐