gnu3.4.4交叉工具链的建立(kernel-2.6.14.1)

来源:互联网 发布:人大报刊资料数据库 编辑:程序博客网 时间:2024/05/17 23:10
 源代码下载:
http://ftp.gnu.org/gnu/binutils/binutils-2.16.tar.gz
http://ftp.gnu.org/gnu/gcc/gcc-3.4.4/gcc-3.4.4.tar.bz2
http://ftp.gnu.org/gnu/glibc/glibc-2.3.5.tar.gz
http://ftp.gnu.org/gnu/glibc/glibc-linuxthreads-2.3.5.tar.gz
http://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.14.1.tar.gz
补丁:
http://frank.harvard.edu/%7Ecoldwell/toolchain/ioperm.c.diff
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/flow.c.diff?cvsroot=gcc&only_with_tag=csl-arm-branch&r1=1.563.4.2&r2=1.563.4.3
http://frank.harvard.edu/%7Ecoldwell/toolchain/t-linux.diff

1 设置环境变量

export PREFIX=/home/xuhaowu/arm/tools/3.4.4
PATH=$PATH:/home/xuhaowu/arm/tools/3.4.4/bin:/home/xuhaowu/arm/tools/gnuarm-3.4.3/bin 

2.编译gnu binutile
 $ mkdir build-bin
 $ configure --prefix=${PREFIX} --target=arm-linux --with-sysroot=${PREFIX}/sysroot 

3.准备内核头文件
用已建立的交叉工具为目标编译内核,会产生相应的链接
$ mkdir -p ${PREFIX}/sysroot/usr/inculde
拷贝linux目录include中的asm-arm,linux.asm-generic到
${PREFIX}/sysroot/usr/inculde中,创建asm-arm的链接asm

4.译编 glibc 头文件         
$ cd /home/xuhaowu/build-tools/build-tmp/mig
$ patch -d glibc-2.3.5 -p1 < ioperm.c.diff
拷贝glibc­linuxthreads­2.3.5.tar.gz解压的两个文件到
glibc-2.3.5中
$ /configure --prefix=/usr --host=arm-linux --enable-add-ons=linuxthreads --with-headers=${PREFIX}/sysroot/usr/include
$ make cross-compiling=yes install_root=${PREFIX}/sysroot install-headers
$ touch ${PREFIX}/sysroot/usr/include/gnu/stubs.h
$ touch ${PREFIX}/sysroot/usr/include/bits/stdio_lim.h

5.编译 gcc 第一阶段
进入gcc源码所在目录
$ patch -d gcc-3.4.4 -p1 < flow.c.diff
$ patch -d gcc-3.4.4 -p1 < t-linux.diff
$ mkdir build-gcc1
$ cd
build-gcc1
$ configure --prefix=${PREFIX} --target=arm-linux --enable-languages=c,c++ --with-sysroot=${PREFIX}/sysroot
$ make all-gcc
$ make install-gcc

6.编译完整的 glibc  
$ mkdir build-glibc
$ cd
build-glibc
$ BUILD_CC=gcc CC=arm-linux-gcc AR=arm-linux-ar RANLIB=arm-linux-ranlib AS=arm-linux-as LD=arm-linux-ld   /home/xuhaowu/build-tools/build-tmp/mig/glibc-2.3.5/configure
--prefix=/usr --build=i686-pc-linux-gnu --host=arm-unknown-linux-gnu --target=arm-unknown-linux-gnu --without-__thread --enable-add-ons=linuxthreads --with-headers=${PREFIX}/sysroot/usr/include
$ make
$ make install_root=${PREFIX}/sysroot install

7.编译完整的 gcc 
$ mkdir build-gcc2
$ cd
build-gcc2
$ /home/xuhaowu/build-tools/build-tmp/mig/gcc-3.4.4/configure --prefix=${PREFIX} --target=arm-linux --enable-languages=c,c++ --with-sysroot=${PREFIX}/sysroot
$ make
$ make install
原创粉丝点击