制作arm-linux交叉编译器
时间:2010-11-23 来源:lantianyu520
原创文章版权所有!如需转载,请注明出处: http://hi.baidu.com/liushuiyue1/myhome谢谢合作!!!!!
本文主要利用crosstools-0.43交叉编译链制作arm平台下的交叉编译器。
1到http://kegel.com/crosstool/crosstool-0.43.tar.gz下载crosstools-0.43交叉编译链
,在http://kegel.com/crosstool/crosstool-0.43/buildlogs/可以看到各种CPU和GCC+Glibc版本那些已经编译成功,那些部分成功,那些彻底失败。如果你不是编译器开发者,就按着上面做吧。你也可以到http://kegel.com/crosstool/#download看看是否有更新的版本。
2.安装环境
OS: Fedora 8
3 。安装步骤
1) 保证你装Fedora8时,安装了需要的软件开发工具。制作之前确保你的机子上有如下几个工具:bison、flex、build-essential。只要是完整安装就没有什么问题了。
2) 下载crosstool,并解压到你的工作目录
#tar -xzvf crosstool-0.43.tar.gz
#cd crosstool-0.43
3)选用demo-arm-softfloat.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=/opt/arm-linux_source
RESULT_TOP=/opt/crosstool//这两行是需要修改的参数,TARBALLS_DIR是下载的工具源码压缩包的存放目录。
//RESULT_TOP是要生成的工具链的存放目录,一定要改到有写权限的目录,不然无法编译。
//如用root登录进行编译,可能会出错,详情请见后记!
//以上是我的修改,他人可以根据实际情况修改。
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 arm-softfloat.dat gcc-2.95.3-glibc-2.1.3.dat` sh all.sh --notest
#eval `cat arm-softfloat.dat gcc-2.95.3-glibc-2.2.2.dat` sh all.sh --notest
#eval `cat arm-softfloat.dat gcc-2.95.3-glibc-2.2.5.dat` sh all.sh --notest
#eval `cat arm-softfloat.dat gcc-3.2.3-glibc-2.2.5.dat` sh all.sh --notest
#eval `cat arm-softfloat.dat gcc-3.2.3-glibc-2.3.2.dat` sh all.sh --notest
#eval `cat arm-softfloat.dat gcc-3.2.3-glibc-2.3.2-tls.dat` sh all.sh --notest
#eval `cat arm-softfloat.dat gcc-3.3.6-glibc-2.2.2.dat` sh all.sh --notest
#eval `cat arm-softfloat.dat gcc-3.3.6-glibc-2.2.5.dat` sh all.sh --notest
#eval `cat arm-softfloat.dat gcc-3.3.6-glibc-2.3.2.dat` sh all.sh --notest
#eval `cat arm-softfloat.dat gcc-3.3.6-glibc-2.3.2-tls.dat` sh all.sh --notest
#eval `cat arm-softfloat.dat gcc-3.4.5-glibc-2.2.5.dat` sh all.sh --notest
#eval `cat arm-softfloat.dat gcc-3.4.5-glibc-2.3.5.dat` sh all.sh --notest
eval `cat arm-softfloat.dat gcc-3.4.5-glibc-2.3.6.dat` sh all.sh --notest --gdb
echo Done.
打开顶层目录下的gcc-3.4.5-glibc-2.3.6.dat这个文件可以看到需要下载的bz2源码
BINUTILS_DIR=binutils-2.15
GCC_DIR=gcc-3.4.5
GLIBC_DIR=glibc-2.3.6
LINUX_DIR=linux-2.6.24.4
LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.12.0
GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.6
3) 最后一步:进入crosstool-0.43目录,输入./ demo-arm-softfloat.sh,需要注意的运行这条指令要在普通用户下运行,不能再root用户下。最后可以在${RESULT_TOP}目录中看到想要的工具链、头文件、库文件等文件了。
如果由于我想使用最新的内核如2.6.30,所以在编译完以上配置的工具链后,我将“LINUX_DIR=linux-2.6.24.4 ”改成“LINUX_DIR=linux-2.6.30.2 ”,并下载linux-2.6.30.2.tar.bz2到${TARBALLS_DIR}目录下,重新编译了一次即可。
下面是一些源码的下载网址链接:
binutils-2.19.1.tar.bz2
glibc-2.9.tar.gz
dmalloc-5.5.2.tgz
glibc-ports-2.9.tar.bz2
mpfr-2.4.2.tar.bz2
duma_2_5_15.tar.gz
gmp-4.3.1.tar.bz2
ncurses-5.7.tar.gz
ecj-latest.jar
libelf-0.8.12.tar.gz
sstrip.c
gcc-4.3.2.tar.bz2
linux-2.6.33.1.tar.bz2
strace-4.5.19.tar.bz2
gdb-6.8.tar.bz2
ltrace_0.5.3.orig.tar.gz