用crosstool配置交叉编译
时间:2009-07-29 来源:China_ADHR
crosstool是个不错的软件,能够很方便的编译自己的交叉编译环境。
目前最新版本crosstool-0.43。
以下是下载地址http://kegel.com/crosstool/crosstool-0.43.tar.gz
首先获取工具包,解压后进入其目录
wget http://kegel.com/crosstool/crosstool-0.43.tar.gz
tar -zxvf crosstool-0.43.tar.gz
cd crosstool-0.43
选择自己希望的模板,这儿是以arm9做试验,因此选择 demo-arm9tdmi.sh 做模板。
vi demo-arm9tdmi.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=/home/ADHR/downloads RESULT_TOP=/home/ADHR/opt/crosstool export TARBALLS_DIR RESULT_TOP GCC_LANGUAGES=”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 arm9tdmi.dat gcc-3.2.3-glibc-2.2.5.dat` sh all.sh –notest #eval `cat arm9tdmi.dat gcc-3.2.3-glibc-2.3.2.dat` sh all.sh –notest #eval `cat arm9tdmi.dat gcc-3.2.3-glibc-2.3.2-tls.dat` sh all.sh –notest #eval `cat arm9tdmi.dat gcc-3.3.6-glibc-2.2.5.dat` sh all.sh –notest #eval `cat arm9tdmi.dat gcc-3.3.6-glibc-2.3.2.dat` sh all.sh –notest #eval `cat arm9tdmi.dat gcc-3.3.6-glibc-2.3.2-tls.dat` sh all.sh –notest #eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.2.5.dat` sh all.sh –notest #eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.2.dat` sh all.sh –notest #eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.2-tls.dat` sh all.sh –notest #eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.5.dat` sh all.sh –notest #eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.5-tls.dat` sh all.sh –notest #eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.6.dat` sh all.sh –notest #eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.6-tls.dat` sh all.sh –notest #eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.2.dat` sh all.sh –notest #eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.2-tls.dat` sh all.sh –notest #eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.5.dat` sh all.sh –notest #eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.5-tls.dat` sh all.sh –notest #eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.6.dat` sh all.sh –notest #eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.6-tls.dat` sh all.sh –notest #eval `cat arm9tdmi.dat gcc-4.1.0-glibc-2.3.2.dat` sh all.sh –notest eval `cat arm9tdmi.dat gcc-4.1.1-glibc-2.3.2.dat` sh all.sh –notest echo Done.
其中红色字为自己修改的地方,看最后一个红色的行,表示我们要编译 gcc 4.1.1 的。
- vi arm9tdmi.dat
可以看到
KERNELCONFIG=`pwd`/arm.config TARGET=arm-9tdmi-linux-gnu GCC_EXTRA_CONFIG=”–with-cpu=arm9tdmi –enable-cxx-flags=-mcpu=arm9tdmi” TARGET_CFLAGS=”-O”
其中红色的文字可以根据自己的需要做修改,一般是 arm-linux,但我还是延续了原目录,符合网上面很多编译情形的。
- vi gcc-4.1.1-glibc-2.3.2.dat
可以看到
BINUTILS_DIR=binutils-2.16.1 GCC_CORE_DIR=gcc-3.3.6 GCC_DIR=gcc-4.1.1 GLIBC_DIR=glibc-2.3.2 LINUX_DIR=linux-2.6.27.4 LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.12.0 GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.2 GDB_DIR=gdb-6.5 GLIBC_EXTRA_CONFIG=”$GLIBC_EXTRA_CONFIG –with-tls –with-__thread –enable-kernel=2.4.18″
将红色的字对应的bz2包下载下来
并且我将LINUX_DIR改为了linux-2.6.27.4最新的linux内核
这些文件我基本都是在 chinaunix 那儿下载的,下载速度很快,放到前面设定的 /home/ADHR/downloads目录中。
然后执行
./demo-arm9tdmi.sh
这个过程要有很长时间,大约一个半小时。
编译完成后,有目录 /home/ADHR/opt/crosstool/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu
最后使用 vi ~/.bashrc文件的最后加入:
export PATH=$PATH:/home/ADHR/opt/crosstool/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/bin
这样新打开的终端就可以使用 arm-9tdmi-linux-gnu-gcc等命令了。