制造之前保证你的机子上有如下几个东西:bison flex build-essential。
build-essential主要是用于供给GCC、GLIBC等必要的编译资源,一般做开发的人员机子上应该都会有的。假设没有,关于UBUNTU用 户:sudo apt-get install build-essential bison flex,其它用户自己看着办,!
1、从http://kegel.com/crosstool处下载crosstool-0.43.tar.gz并解开存于$HOME下。
假设你想要arm9tdmi上的东西链(其它东西链办法相同),进入crosstool-0.43目录,用文本编辑器翻开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/downloads //该行表明你行将下载的东西源码压缩包的寄存目录!
RESULT_TOP=/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 dont 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.0-glibc-2.3.2-tls.dat` sh all.sh –notest
echo Done. //上面表明你要选东西链的版本号!”#”起注释功用!咱们能够挑选一行!
我把RESULT_TOP=/opt/crosstool改成RESULT_TOP=$HOME/toolchains,并在HOME目录下树立downloads 和toolchains两个目录,别离用于寄存源码压缩包和即将生成的东西链。
翻开crosstool-0.43目录下的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”
这个文件一般用于设置一些变量,一般不必改,用默许即可!
翻开crosstool-0.43目录下的gcc-4.0.2-glibc-2.3.5-tls.dat文件,内容如下:
BINUTILS_DIR=binutils-2.16.1
GCC_DIR=gcc-4.0.2
GLIBC_DIR=glibc-2.3.5
LINUX_DIR=linux-2.6.15.4
LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.12.0
GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.5
GLIBC_EXTRA_CONFIG=”$GLIBC_EXTRA_CONFIG –with-tls –with-__thread –enable-kernel=2.4.18″
然后你就能够到网上去下载上面赤色符号的几个源码包,留意对应的版本号,下载后寄存在downloads目录下。留意,不需求解压!!你乃至能够去掉 LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.12.0这一行(当然也就中需求下载这个包 了)!你能够到我国的镜像站点去下载这些包:
http://mirrors.shlug.org/ http://www.cn.kernel.org/pub/linux
http://www.cn.kernel.org/pub/software ftp://ftp.cn.kernel.org/pub/linux
ftp://ftp.cn.kernel.org/pub/software
NOW,ITS OK!
2、进入crosstool-0.43目录,输入./demo-arm9tdmi.sh,然后通过几个小时的编译,就能够在你的toolchains目录中看到你想要的东西链,头文件,库文件等东东了!你能够把东西链地点目录加到环境变量PATH中即可运用东西链了!
留意:crosstool-0.43目录下的PATCH目录中有各个东西链的补丁,假设在编译进程中有过错,能够在crosstool-0.43目录下 build目录中的解压后的源文件中打上补丁(我没打补丁也编译成功了,)。别的,假设不想每次编译时都有浪费时间的解压进程,能够在eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.5-tls.dat` sh all.sh –notest 结尾处加–nounpack表明不解压(当然条件是你现已自行解压源码包到了对应的目录/build/gcc-4.0.2-glibc-2.3.5- tls/arm-9tdmi-linux-gnu里了,也能够在这时给其打补丁).