1、最近学习制作嵌入式中制作交叉编译器的方法,本文章是傻瓜式的方法。不过可以先入门学习,以后有时间,可以自己动手亲自制作一个交叉编译器。
首先,在网上下载crosstool软件包吧。
配置crosstool,解压此软件包。
编辑如下几个文件:
1)arm.dat:
[root@linux-58 crosstool-0.43]# vi arm.dat
KERNELCONFIG=`pwd`/arm.config
TARGET=arm-linux #交叉编译软件的前缀,如arm-linux-gcc
TARGET_CFLAGS="-O"
2)vi demo-arm.sh:
#!/bin/sh
# This script has one line for each known working toolchain
# for this architecture. Uncomment the one you want.
# Generated by generate-demo.pl from buildlogs/all.dats.txt
set -ex
TARBALLS_DIR=`pwd`/downloads #下载的软件包存放的地址
RESULT_TOP=/usr/local/crosstool #交叉编译环境安装在哪里
export TARBALLS_DIR RESULT_TOP
GCC_LANGUAGES="c,c++" ########定义支持c,c++
export GCC_LANGUAGES
# Really, you should do the mkdir before running this,
# and chown /opt/crosstool to yourself so you don't need to run as root.
mkdir -p $RESULT_TOP
#eval `cat arm.dat gcc-2.95.3-glibc-2.1.3.dat` sh all.sh --notest
#eval `cat arm.dat gcc-2.95.3-glibc-2.2.2.dat` sh all.sh --notest
#eval `cat arm.dat gcc-2.95.3-glibc-2.2.5.dat` sh all.sh --notest
#eval `cat arm.dat gcc-3.2.3-glibc-2.2.5.dat` sh all.sh --notest
#eval `cat arm.dat gcc-3.2.3-glibc-2.3.2.dat` sh all.sh --notest
#eval `cat arm.dat gcc-3.2.3-glibc-2.3.2-tls.dat` sh all.sh --notest
#eval `cat arm.dat gcc-3.3.6-glibc-2.2.2.dat` sh all.sh --notest
#eval `cat arm.dat gcc-3.3.6-glibc-2.2.5.dat` sh all.sh --notest
#eval `cat arm.dat gcc-3.3.6-glibc-2.3.2.dat` sh all.sh --notest
#eval `cat arm.dat gcc-3.3.6-glibc-2.3.2-tls.dat` sh all.sh --notest
#eval `cat arm.dat gcc-3.4.5-glibc-2.2.2.dat` sh all.sh --notest
#eval `cat arm.dat gcc-3.4.5-glibc-2.2.5.dat` sh all.sh --notest
#eval `cat arm.dat gcc-3.4.5-glibc-2.3.2.dat` sh all.sh --notest
#eval `cat arm.dat gcc-3.4.5-glibc-2.3.2-tls.dat` sh all.sh --notest
#eval `cat arm.dat gcc-3.4.5-glibc-2.3.5.dat` sh all.sh --notest
#eval `cat arm.dat gcc-3.4.5-glibc-2.3.5-tls.dat` sh all.sh --notest
#eval `cat arm.dat gcc-3.4.5-glibc-2.3.6.dat` sh all.sh --notest
#eval `cat arm.dat gcc-3.4.5-glibc-2.3.6-tls.dat` sh all.sh --notest
#eval `cat arm.dat gcc-4.0.2-glibc-2.2.2.dat` sh all.sh --notest
#eval `cat arm.dat gcc-4.0.2-glibc-2.3.2.dat` sh all.sh --notest
#eval `cat arm.dat gcc-4.0.2-glibc-2.3.2-tls.dat` sh all.sh --notest
#eval `cat arm.dat gcc-4.0.2-glibc-2.3.5.dat` sh all.sh --notest
#eval `cat arm.dat gcc-4.0.2-glibc-2.3.5-tls.dat` sh all.sh --notest
#eval `cat arm.dat gcc-4.0.2-glibc-2.3.6.dat` sh all.sh --notest
#eval `cat arm.dat gcc-4.0.2-glibc-2.3.6-tls.dat` sh all.sh --notest
#eval `cat arm.dat gcc-4.1.0-glibc-2.2.2.dat` sh all.sh --notest
#eval `cat arm.dat gcc-4.1.0-glibc-2.3.2.dat` sh all.sh --notest
#这是我们要编译的交叉环境的版本
eval `cat arm.dat gcc-4.1.0-glibc-2.3.2-tls.dat` sh all.sh --notest
echo Done.
3) gcc-4.1.0-glibc-2.3.6-tls.dat
[root@linux-58 crosstool-0.43]# vi gcc-4.1.0-glibc-2.3.6-tls.dat
##关联的软件包版本
BINUTILS_DIR=binutils-2.16.1
GCC_CORE_DIR=gcc-3.3.6
GCC_DIR=gcc-4.1.0
GLIBC_DIR=glibc-2.3.6
LINUX_DIR=linux-2.6.15.4
LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.12.0
GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.6
GDB_DIR=gdb-6.5
GLIBC_EXTRA_CONFIG="$GLIBC_EXTRA_CONFIG --with-tls --with-__thread --enable-kernel=2.4.18"
4)最后在用户模式下执行demo-arm.sh,不允许在root下执行
./demo-arm.sh
5)最后在/usr/local/crosstool/目录下会生成很多工具arm-linux开头的工具。
总结:
1)基本的过程就这么多, 但要说一下
编译前需要下载一些软件到$TARBALLS_DIR之下 ,crosstool 会自动帮你下载,用wget下载速度慢,可以自己下载到之前我们制定的downloads目录中。
binutils-2.16.1.tar.bz2 glibc-linuxthreads-2.3.2.tar.bz2
binutils-2.17.tar.gz glibc-linuxthreads-2.3.6.tar.bz2
gcc-3.3.6.tar.bz2 glibc-linuxthreads-2.3.6.tar.gz
gcc-4.1.0.tar.bz2 linux-2.6.15.4.tar.bz2
gdb-6.5.tar.bz2 linux-libc-headers-2.6.12.0.tar.bz2
glibc-2.3.2.tar.bz2
glibc-2.3.6.tar.gz
2)制作交叉编译链的方法还有二种,
一种是用这样一个脚本 ,自动编译。
一种是如果你精力旺盛,你可以自己手动编译,在下面的章节二中,我会总结手动编译的过程。
生活美好,学习无止境。
阅读(2544) | 评论(0) | 转发(1) |