由于最近制作文件系统,发现原来所用编译器的库只支持armv5t架构,并不支持我所用的armv4t架构的arm9芯片,因此针对我所用芯片s3c2440制作了最新的交叉编译工具链,先附上图。 以下为制作交叉编译工具链步骤:
安装crosstool-NG a. 建立arm-linux-tools目录
mkdir arm-linux-tools cd arm-linux-tools/b. 从http://crosstool-ng.org/download/crosstool-ng/中下载新版crosstool-NG c. 解压crosstool-NG
tar -jxvf crosstool-ng-1.24.0.tar.bz2d. 在arm-linux-tools下建立src目录
mkdir srce. 配置并进行依赖检测
cd crosstool-ng-1.24.0 ./configure 如果存在包缺失的现象,安装好之后再执行配置即可f. 编译并安装
make make installg. 检查crosstool-NG是否安装成功
ct-ng -v配置交叉编译工具链 在crosstool-NG中有很多已经做好的默认配置(位于crosstool-ng-1.24.0/samples目录下),这里只需要进行修改就可以了。因为是制作arm-linux的交叉编译工具链,所以选择arm-unknown-linux-gnueabi进行配置。 a. 拷贝默认的.config
cp samples/arm-unknown-linux-gnueabi/crosstool.config .configb. 配置config
ct-ng menuconfigc. 设定源码包路径和交叉编译器的安装路径
源码包路径:设置Paths and misc options下的Local tarballs directory为/arm-linux-tools/src 交叉编译器的安装路径:设置Paths and misc options下的Prefix directory为/arm-linux-tools/x-tools/${CT_TARGET}d. 修改交叉编译器针对的架构
设置Target options下的Architecture level为armv4t 设置Target options下的Emit assembly for CPU为arm9tdmi 设置Target options下的Tune for CPU为arm920te. 设置编译时的并行进程数
设置Paths and misc options下的Number of parallel jobs为4。这个数值不宜过大,应该为CPU核心数量的两倍。f. 设置编译器vender名
设置Toolchain options下的Tuple's vendor string为S3C2440,这样生成的编译器的前缀就是arm-S3C2440-linux-gnueabi-g. 编译
ct-ng build.4 编译过程出错查看build.log文件,wget获取依赖包失败可手动下载放在.build/tarballs/目录下h. 配置环境变量
sudo vi /etc/environment 增加:/home/hanrunyu/work/tools/arm-linux-tools/x-tools/arm-s3c2440-linux-gnueabi/bin于PATHi. 检查交叉编译工具链是否安装成功
arm-S3C2440-linux-gnueabi-gcc -vj. 编译成功后的交叉编译器路径
编译器路径:/home/hanrunyu/work/tools/arm-linux-tools/x-tools/arm-s3c2440-linux-gnueabi/bin/ 库文件路径:/home/hanrunyu/work/tools/arm-linux-tools/x-tools/arm-s3c2440-linux-gnueabi/arm-s3c2440-linux-gnueabi/sysroot/lib/ /home/hanrunyu/work/tools/arm-linux-tools/x-tools/arm-s3c2440-linux-gnueabi/arm-s3c2440-linux-gnueabi/sysroot/usr/lib/