使用的操作系统是Debian 4.0 。
在开始制作之前,需要先安装以下工具,不然配置的时候会出错:
apt-get install build-essential
apt-get install bison flex
好了,基本的配置完成后,就可以开始配置交叉编译环境了。
首先将下载的源码包全部放在一个目录,我的目录是/mnt/hgfs/e/tools,需要下载的源码包包括如下几个:
binutils-2.16.1.tar.bz2 binutils-2.17.tar.bz2
gcc-3.3.6.tar.bz2 gcc-4.1.0.tar.bz2
gdb-6.5.tar.bz2 glibc-2.3.2.tar.gz
glibc-2.3.6.tar.gz glibc-linuxthreads-2.3.2.tar.gz
glibc-linuxthreads-2.3.6.tar.bz2 linux-2.6.15.4.tar.bz2
linux-libc-headers-2.6.12.0.tar.bz2
然后,下载crosstool工具包,下载地址:
三个重要文件:
arm.dat
KERNELCONFIG=`pwd`/arm.config TARGET=arm-linux #交叉编译软件的前缀,如arm-linux-gcc TARGET_CFLAGS="-O"
|
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=/mnt/hgfs/e/tools #源码包位置 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 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.
|
gcc-4.1.0-glibc-2.3.2-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.2 LINUX_DIR=linux-2.6.15.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"
|
然后,就可以运行./demo-arm.sh开始配置和编译了。注意,这个操作要在用户模式下完成,root模式下会出错,并退出。
注意,这个过程需要较长的时间,我在虚拟机下用了大概两个小时。安装完成以后,试着编译了一下uboot,版本为1.3.2,编译过程没有异常,得到的二进制文件也能正常使用。
祝你好运!
阅读(1227) | 评论(0) | 转发(0) |