1. 软件环境
Fedora 10 ,所以其他软件均为Fedora-10-i386-DVD.iso自带,只有gcc被笔者降级为gcc-
2. 设置环境变量,准备源码及相关补丁
binutils
名称:binutils2.16. tar.gz
下载地址:http://ftp.gnu.org/gnu/binutils/binutils-2.16.tar.gz
gcc
名称: gcc-.tar.bz2
下载地址: http://ftp.gnu.org/gnu/gcc/gcc-/gcc-3.4.4.tar.bz2
glibc
名称: glibc-.tar.gz
glibc-linuxthreads-.tar.gz
下载地址: http://ftp.gnu.org/gnu/gcc/gcc-/gcc-3.4.4.tar.bz2
http://ftp.gnu.org/gnu/glibc/glibc-linuxthreads-.tar.gz
linux kernel
名称: linux-.tar.bz2
下载地址: http://ftp.kernel.org/pub/linux/kernel/
2.5 准备补丁
ioperm.c.diff
作用: 打修正ioperm()函数
下载地址: http://frank.harvard.edu/~coldwell/toolchain/ioperm.c.diff
flow.c.diff
作用: 该补丁用于产生crti.o和crtn.o文件.
下载地址:
t-linux.diff
作用: 修改gcc一处bug
下载地址: http://frank.harvard.edu/~coldwell/toolchain/t-linux.diff
6200_all_arm-glibc--ioperm.patch
下载地址: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/
3. 编译GNU binutils
binutils-2.16#./configure --prefix=${PREFIX} --target=${TARGET} --with-sysroot=${SYSROOT}
#make
#make install
4. 准备内核头文件
使用当前平台的gcc编译内核头文件
linux-# cp arch/arm/configs/smdk2410_defconfig .config
本人是用的CPU是S3C2410,选择了一个配置文件smdk_defconfig,你可以根据你的需要选择
# make ARCH=arm menuconfig
退出时
Do you wish to save your new kernel configuration?
< Yes > < No >
选择Yes
检查/include/linux/autoconf.h时间是否最新
复制内核头文件
linux-#cp -a include/linux ${SYSROOT}/usr/include/linux
#cp -a include/asm-arm ${SYSROOT}/usr/include/asm
#cp –a include/asm-generic ${SYSROOT}/usr/include/asm-generic
5. 编译glibc头文件
#patch -d glibc- -p1 < ioperm.c.diff
#patch -p1 -d glibc- < 6200_all_arm-glibc-2.3.4-ioperm.patch
#tar zxvf glibc-linuxthreads-.tar.gz
#./configure --prefix=/usr --host=${TARGET} --enable-add-ons=linuxthreads --with-headers=${SYSROOT}/usr/include
# make cross-compiling=yes install_root=${SYSROOT} install-headers
# touch ${SYSROOT}/usr/include/gnu/stubs.h
# touch ${SYSROOT}/usr/include/bits/stdio_lim.h
6. 编译gcc 第一阶段
gcc--stage1#patch -d gcc- -p1 < flow.c.diff
#patch -d gcc- -p1 < t-linux.diff
#./configure --prefix=${PREFIX} --target=${TARGET} --enable-languages=c --with-sysroot=${SYSROOT}
注意: 不能加上--disable-shared
#make all-gcc
#make install-gcc
7. 编译完整的glibc
glibc-# BUILD_CC=gcc CC=${CROSS_COMPILE}gcc AR=${CROSS_COMPILE}ar RANLIB=${CROSS_COMPILE}ranlib AS=${CROSS_COMPILE}as LD=${CROSS_COMPILE}ld ./configure --prefix=/usr --build=i386-fedora-linux --host=arm-linux-gnu --target=arm-linux-gnu --without-__thread --enable-add-ons=linuxthreads --with-headers=${SYSROOT}/usr/include
# make
# make install_root=${SYSROOT} install
8. 编译完整的gcc
gcc-#./configure --prefix=${PREFIX} --target=${TARGET} --enable-languages=c,c++ --with-sysroot=${SYSROOT}
#make
#make install
附录. GNU交叉工具链的下载
工具链的官方下载地址:
可以从该站点下载2.95.3, 3.0以及3.2工具链