预览加载中,请您耐心等待几秒...
1/5
2/5
3/5
4/5
5/5

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

构建交叉编译工具链完全手册 说明:此文档为顶嵌李亚峰老师所做,仅通过Crosstool工具进行构建。本人在对 照文档进行构建是出现了一点小问题,因此将解决方法嵌入其中,供大家参考。如 遇到问题欢迎提出。在此感谢李亚峰老师。 第一阶段:工具链编译第一部分; Crosstool是由美国人DanKegel(毕业于加(利福尼亚)州工学院)开发的一套可以自 动编译不同匹配版本gcc和glibc,并作测试的脚本程序。Crosstool最初是为嵌入式 系统开发者创建,但也适用于主流开发者比如只是希望他们去快速编译或需要建立 程序,可运行在旧版本的Linux操作系统(例如RedHat的6.2)。Crosstool是一种便 携式的shell脚本。你可以使用它来建立Linux系统配置的编译器是运行在Linux, MacOSX操作系统,Solaris和Cygwin等。它支持的硬件平台有:alpha,arm,i686, ia64,mips,powerpc,powerpc64,sh4,sparc,sparc64,s390,x86_64等。 在实践之前,我们需要回答这样的问题,为什么要使用交叉编译器?主要原因是嵌 入式硬件(目标机)的性能一般都无法满足开发环境的要求,比如主频比较低、内 存少、没有硬盘(常用FLASH作为存储设备)、没有大型显示设备、没有全键盘 等。交叉编器通常是采用PC(x86)作为主机来搭建开发环境进行编译,但编译出的 软件能够在特定CPU体系架构的目标设备(比如ARM设备)上运行的一套编译工 具。 下面将以具体操作步骤来讲述Crosstool构建针对ARM平台的交叉编译器。注:该 实验是基于Fedora10操作系统下进行,其他Linux发行版可能会有所不同。 1.准备资源文件 软件包名称下载站点 crosstool-0.43.tar.gzhttp://kegel.com/crosstool/crosstool-0.43.tar.gz binutils-2.15.tar.bz2http://ftp.gnu.org/gnu/binutils/ gcc-3.4.5.tar.bz2http://ftp.gnu.org/gnu/gcc glibc-2.3.6.tar.bz2http://ftp.gnu.org/gnu/glibc glibc-linuxthreads-2.3.6.tar.bz2http://ftp.gnu.org/gnu/glibc linux-2.6.28.2.tar.bz2http://ftp.kernel.org/pub/linux/kernel/v2.6/ linux-libc-headers-2.6.12.0.tar.bz2http://ep09.pld-linux.org/~mmazur/linux-libc-headers/ 首先从网上下载上述资源文件:binutils-2.15.tar.bz2,gcc-3.4.5.tar.bz2,glibc-2.3.6. tar.bz2,glibc-linuxthreads-2.3.6.tar.bz2,linux-2.6.28.2.tar.bz2和linux-libc- headers-2.6.12.0.tar.bz2。然后将这些工具包文件放在开放主机的/home/mike/ downloads目录(该目录根据个人使用习惯不同可修改)下,最后在/home/mike目 录下解压crosstool-0.43.tar.gz,命令如下: #cd/home/mike #tar-xvzfcrosstool-0.43.tar.gz 2建立脚本文件 接着需要建立自己的编译脚本,起名为arm.sh,为了简化编写arm.sh,寻找一个最 接近的脚本文件demo-arm.sh作为模版,然后将该脚本的内容复制到arm.sh,修改 arm.sh脚本,具体操作如下: #cdcrosstool-0.43 #cpdemo-arm.sharm.sh #viarm.sh 修改后的arm.sh的脚本内容如下: #!/bin/sh set-ex TARBALLS_DIR=/home/mike/downloads#定义工具链源码所存放位置。 RESULT_TOP=/opt/crosstool#定义工具链的安装目录 exportTARBALLS_DIRRESULT_TOP GCC_LANGUAGES="c,c++"#定义支持C,C++语言 exportGCC_LANGUAGES #创建/opt/crosstool目录 mkdir-p$RESULT_TOP #编译工具链,该过程需要数小时完成。 eval`catarm.datgcc-3.4.5-glibc-2.3.6.dat`shall.sh--notest echoDo