1、手工制作最新版armlinux交叉工具链手工制作最新版arm-linux交叉工具链注意:本文是在ubuntu 10.04 desktop i386操作系统上完成的,1、准备目录和环境变量# echo “1. Prepare Directories and Environment Variables” | tee /make_cross.txt#mkdir -p /usr/local/arm/tars,source,4.2.1# grep HISTSIZE /.bashrc | echo “export HISTSIZE=5000 /.bashrc# . /.bashrc# apt-get -y
2、 install patch texinfo m4 flex bison# apt-get -y build-dep glib2.0# apt-get -y build-dep gcc-4.3# grep TARGET_PREFIX /.bashrc | cat /.bashrc export TOP=/usr/local/armexport TAR=$TOP/tarsexport CLFS=$TOP/clfsexport SYSROOT=$TOP/4.2.1export TARGET_PREFIX=$TOP/4.2.1export LINUX_VERSION=2.6.22.6export B
3、INUTILS_VERSION=2.18export GLIBC_VERSION=2.6.1export GCC_VERSION=4.2.1export GDB_VERSION=7.0export CLFS_TARGET=”arm-linux”export PATH=$TARGET_PREFIX/bin:$PATHunset CFLAGSunset CXXFLAGSEOF# . /.bashrc2、准备源码包# echo “2. Prepare Source Packages” | tee -a /make_cross.txt# which wget | apt-get -y install
4、wget# cd /usr/local/arm/tars# -f binutils-2.18.tar.bz2 | wget ftp:/ftp.gnu.org/gnu/binutils/binutils-2.18.tar.bz2# -f binutils-2.18-posix-1.patch | wget # -f gcc-4.2.1.tar.bz2 | wget ftp:/ftp.gnu.org/gnu/gcc/gcc-4.2.1/gcc-4.2.1.tar.bz2# -f gcc-4.2.1-cross_search_paths-1.patch | wget # -f gcc-4.2.1-p
5、osix-1.patch | wget # -f glibc-2.6.1.tar.bz2 | wget ftp:/ftp.gnu.org/gnu/glibc/glibc-2.6.1.tar.bz2# -f glibc-ports-2.6.1.tar.bz2 | wget ftp:/ftp.gnu.org/gnu/glibc/glibc-ports-2.6.1.tar.bz2# -f glibc-2.6.1-RTLD_SINGLE_THREAD_P-1.patch | wget # -f glibc-2.6.1-cross_hacks-1.patch | wget # -f glibc-2.6.
6、1-hppa_nptl-1.patch | wget # -f glibc-2.6.1-libgcc_eh-1.patch | wget # -f glibc-2.6.1-localedef_segfault-1.patch | wget # -f glibc-2.6.1-sysdep_cancel-1.patch | wget # -f linux-2.6.22.tar.bz2 | wget ftp:/ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.22.tar.bz2# -f gdb-7.0a.tar.bz2 | wget ftp:/ftp.g
7、nu.org/gnu/gdb/gdb-7.0a.tar.bz23、安装Linux内核头文件# echo “3. Install Linux Kernel Headers” | tee -a /make_cross.txt# install -dv $SYSROOT/usr/include# install -dv $TOP/source# cd $TOP/source# tar -xjf $TAR/linux-$LINUX_VERSION.tar.bz2# cd linux-$LINUX_VERSION# make mainstone_defconfig ARCH=arm# make incl
8、ude/linux/version.h# cp -a include/asm-generic,linux,mtd,scsi,sound $SYSROOT/usr/include# cp -a include/asm-arm $SYSROOT/usr/include/asm4、编译安装binutils# echo “4. Compile Binutils” | tee -a /make_cross.txt# mkdir -p $TARGET_PREFIX# cd $TOP/source# tar -jxf $TAR/binutils-$BINUTILS_VERSION.tar.bz2# cd b
9、inutils-$BINUTILS_VERSION# patch -Np1 -i $TAR/binutils-$BINUTILS_VERSION-posix-1.patch# mkdir -p $TOP/source/BUILD/binutils-$BINUTILS_VERSION# cd $TOP/source/BUILD/binutils-$BINUTILS_VERSION# export AR=ar# export AS=as# sed -i s%0-9|4.4-9|5-9%0-9|4.4-9|4.1-90-9*|5-9%g $TOP/source/binutils-$BINUTILS_
10、VERSION/configure# $TOP/source/binutils-$BINUTILS_VERSION/configure prefix=$TARGET_PREFIX target=$CLFS_TARGET with-sysroot=$SYSROOT disable-nls enable-shared disable-multilib enable-werror=no# make configure-host# make# make install# cp -v $TOP/source/binutils-$BINUTILS_VERSION/include/libiberty.h $
11、SYSROOT/usr/include5、安装Glibc 的头文件# echo “5. Install the Glibc Headers” | tee -a /make_cross.txt# cd $TOP/source# tar -jxf $TAR/glibc-$GLIBC_VERSION.tar.bz2# mv glibc-$GLIBC_VERSION glibc-$GLIBC_VERSION-headers-build# cd glibc-$GLIBC_VERSION-headers-build# cp configure,.orig# sed -e s/3.4/3.0-9/g con
12、figure.orig configure# tar -jxf $TAR/glibc-ports-$GLIBC_VERSION.tar.bz2# mv glibc-ports-$GLIBC_VERSION ports# mkdir -p $TOP/source/BUILD/glibc-$GLIBC_VERSION-headers-build# cd $TOP/source/BUILD/glibc-$GLIBC_VERSION-headers-build# echo “libc_cv_forced_unwind=yes” config.cache# echo “libc_cv_c_cleanup
13、=yes” config.cache# echo “libc_cv_arm_tls=yes” config.cache# export CC=gcc# sed -i s%2.13-9*%2.13-9* | 2.2*%g $TOP/source/glibc-$GLIBC_VERSION-headers-build/configure #as和ld版本太新# $TOP/source/glibc-$GLIBC_VERSION-headers-build/configure prefix=/usr host=$CLFS_TARGET with-headers=$SYSROOT/usr/include
14、cache-file=config.cache# make install-headers install_root=$SYSROOT# cp -v bits/stdio_lim.h $SYSROOT/usr/include/bits# touch $SYSROOT/usr/include/gnu/stubs.h# cp -f $TOP/source/glibc-$GLIBC_VERSION-headers-build/ports/sysdeps/unix/sysv/linux/arm/nptl/bits/pthreadtypes.h $SYSROOT/usr/include/bits6、编译
15、gcc(第一阶段,生成临时arm-linux-gcc)# echo “6. Compile Gcc Firstly” | tee -a /make_cross.txt# export CC=gcc# cd $TOP/source# tar -jxf $TAR/gcc-$GCC_VERSION.tar.bz2# mv gcc-$GCC_VERSION gcc-$GCC_VERSION-stage1# cd gcc-$GCC_VERSION-stage1# patch -Np1 -i $TAR/gcc-$GCC_VERSION-posix-1.patch# patch -Np1 -i $TAR/g
16、cc-$GCC_VERSION-cross_search_paths-1.patch# cd $TOP/source# mkdir -p BUILD/gcc-$GCC_VERSION-stage1# cd BUILD/gcc-$GCC_VERSION-stage1# $TOP/source/gcc-$GCC_VERSION-stage1/configure prefix=$TARGET_PREFIX host=$MACHTYPE target=$CLFS_TARGET disable-multilib with-sysroot=$SYSROOT disable-nls disable-shar
17、ed enable-languages=c# make all-gcc# make install-gcc7、编译库文件GLIBC# echo “7. Compile Glibc Libraries” | tee -a /make_cross.txt# cd $TOP/source# tar -jxf $TAR/glibc-$GLIBC_VERSION.tar.bz2# cd glibc-$GLIBC_VERSION# tar -jxf $TAR/glibc-ports-$GLIBC_VERSION.tar.bz2# mv glibc-ports-$GLIBC_VERSION ports# p
18、atch -Np1 -i $TAR/glibc-2.6.1-libgcc_eh-1.patch# patch -Np1 -i $TAR/glibc-2.6.1-localedef_segfault-1.patch# patch -Np1 -i $TAR/glibc-2.6.1-cross_hacks-1.patch# patch -Np1 -i $TAR/glibc-2.6.1-RTLD_SINGLE_THREAD_P-1.patch# mkdir -p $TOP/source/BUILD/glibc-$GLIBC_VERSION# cd $TOP/source/BUILD/glibc-$GL
19、IBC_VERSION# echo “libc_cv_forced_unwind=yes” config.cache# echo “libc_cv_c_cleanup=yes” config.cache# echo “libc_cv_arm_tls=yes” config.cache# export BUILD_CC=gcc# export CC=”$CLFS_TARGET-gcc”# export AR=”$CLFS_TARGET-ar”# export RANLIB=”$CLFS_TARGET-ranlib”# sed -i /#include “locfile-kw.h”/a const
20、 struct keyword_t * locfile_hash (register const char *str, register unsigned int len); $TOP/source/glibc-$GLIBC_VERSION/locale/programs/locfile.c# sed -i /#include “charmap-kw.h”/a const struct keyword_t * charmap_hash (register const char *str, register unsigned int len); $TOP/source/glibc-$GLIBC_
21、VERSION/locale/programs/charmap.c# $TOP/source/glibc-$GLIBC_VERSION/configure prefix=/usr libexecdir=/usr/lib/glibc host=$CLFS_TARGET build=$MACHTYPE disable-profile enable-add-ons with-tls enable-kernel=2.6.0 with-_thread with-binutils=$TARGET_PREFIX/bin with-headers=$SYSROOT/usr/include cache-file
22、=config.cache# make# make install install_root=$SYSROOT8、编译gcc(第二阶段,生成最终arm-linux-gcc)# echo “8. Compile Gcc Secondly” | tee -a /make_cross.txt# export CC=gcc# cd $TOP/source# tar -jxf $TAR/gcc-$GCC_VERSION.tar.bz2# mv gcc-$GCC_VERSION gcc-$GCC_VERSION-stage2# cd gcc-$GCC_VERSION-stage2# patch -Np1
23、-i $TAR/gcc-$GCC_VERSION-posix-1.patch# patch -Np1 -i $TAR/gcc-$GCC_VERSION-cross_search_paths-1.patch# cd $TOP/source# mkdir -p BUILD/gcc-$GCC_VERSION-stage2# cd BUILD/gcc-$GCC_VERSION-stage2# $TOP/source/gcc-$GCC_VERSION-stage2/configure prefix=$TARGET_PREFIX host=$MACHTYPE target=$CLFS_TARGET dis
24、able-multilib with-sysroot=$SYSROOT disable-nls enable-shared enable-languages=c,c+ enable-_cxa_atexit enable-c99 enable-long-long enable-threads=posix# make all-gcc# make install-gcc install_root=$TARGET_PREFIX9、编译GDB# echo “9. Compile GDB” | tee -a /make_cross.txt# export CC=gcc# cd $TOP/source# t
25、ar -jxf $TAR/gdb-$GDB_VERSIONa.tar.bz2# apt-get -y install libncurses5-dev# mkdir -p BUILD/gdb-$GDB_VERSION# cd BUILD/gdb-$GDB_VERSION# echo “9.1. Compile GDB Client” | tee -a /make_cross.txt# $TOP/source/gdb-$GDB_VERSION/configure target=$CLFS_TARGET prefix=$TARGET_PREFIX# make# make install# echo
26、“9.2. Compile GDB Server” | tee -a /make_cross.txt# export CC=arm-linux-gcc# mkdir -p gdbserver# cd gdbserver# $TOP/source/gdb-$GDB_VERSION/gdb/gdbserver/configure target=$CLFS_TARGET host=$CLFS_TARGET# sed -i s|#define HAVE_SYS_REG_H|/#define HAVE_SYS_REG_H|g config.h# make CC=arm-linux-gcc# cp gdbserver $TARGET_PREFIX/bin# echo “The GDB Server binrary is copied into $TARGET_PREFIX/bin” | tee -a /make_cross.txt# echo ! All Well Done ! | tee -a /make_cross.txt# echo “The cross tool is at /usr/local/arm/4.2.1/bin directory, reboot the host please”自动创建工具链的脚本文件从“这里”下载,在运行脚本前确保网络是通的。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1