linux嵌入式开发建立交叉编译环境(2.6内核)的制作

1、获取源代码
The versions chosen are not necessarily the most recent, but they do seem to work together with a minimum of patching. The last two files are only necessary if you are targeting the Atmel AT91RM9200 CPU.

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://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/~coldwell/toolchain/t-linux.diff
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://frank.harvard.edu/~coldwell/toolchain/ioperm.c.diff
http://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.10.tar.gz
http://maxim.org.za/AT91RM9200/2.6/2.6.10-at91.patch.gz
http://maxim.org.za/AT91RM9200/2.6/26_at91_serial.c.gz
2、设置环境变量
#vi    ~/.bashrc
 添加如下内容
export PREFIX=/usr/local/arm/3.4.4
export TARGET=arm-linux
export SYSROOT=${PREFIX}/sysroot
export ARCH=arm
export CROSS_COMPILE=${TARGET}-
export PATH=$PATH:${PREFIX}/bin
注销系统,重新登录,使得环境变量生效
3、建立二进制工具
#mkdir -p ${PREFIX}/src
#cd ${PREFIX}/src
#tar zxvf binutils-2.16.tar.gz
#mkdir -p BUILD/binutils-2.16
#cd BUILD/binutils-2.16
#../../binutils-2.16/configure --prefix=${PREFIX} --target=${TARGET} --with-sysroot=${SYSROOT} && make && make install&& echo ok(如果最后一行显示ok则表示安装成功)
4、建立内核头文件
#cd ${PREFIX}/src
#tar zxvf linux-2.6.10.tar.gz
#ln -s linux-2.6.10 linux
#zcat 2.6.10-at91.patch.gz | patch -d linux -p1
#cd linux
#make at91rm9200dk_defconfig
#make include/linux/version.h
#mkdir -p ${SYSROOT}/usr/include
#cp -a ${PREFIX}/src/linux/include/linux ${SYSROOT}/usr/include/linux
#cp -a ${PREFIX}/src/linux/include/asm-arm ${SYSROOT}/usr/include/asm
#cp -a ${PREFIX}/src/linux/include/asm-generic ${SYSROOT}/usr/include/asm-generic
5、安装glibc头文件
#cd ${PREFIX}/src
#tar zxvf glibc-2.3.5.tar.gz
#patch -d glibc-2.3.5 -p1 <ioperm.c.diff
#cd glibc-2.3.5
#tar xvfz ../glibc-linuxthreads-2.3.5.tar.gz
#cd ..
#mkdir -p BUILD/glibc-2.3.5-headers
#cd BUILD/glibc-2.3.5-headers
#../../glibc-2.3.5/configure --prefix=/usr --host=i386-redhat-linux --enable-add-ons=linuxthreads --with-headers=${SYSROOT}/usr/include&& make cross-compiling=yes install_root=${SYSROOT}install-headers && echo ok
注意: --host={TARGET}是不行的,要根据宿主机来修改
#touch ${SYSROOT}/usr/include/gnu/stubs.h
#touch ${SYSROOT}/usr/include/bits/stdio_lim.h
6、建立初始编译器
#cd ${PREFIX}/src
#tar jxvf gcc-3.4.4.tar.bz2
#patch -d gcc-3.4.4 -p1 < flow.c.diff
#patch -d gcc-3.4.4 -p1 < t-linux.diff
#mkdir -p BUILD/gcc-3.4.4-stage1
#cd BUILD/gcc-3.4.4-stage1
#../../gcc-3.4.4/configure --prefix=${PREFIX} --target=${TARGET} --enable-languages=c --with-sysroot=${SYSROOT} && make&& make install && echo ok
7、建立c库
#cd ${PREFIX}/src
#mkdir -p BUILD/glibc-2.3.5
#BUILD_CC=gcc CC=${CROSS_COMPILE}gcc AR=${CROSS_COMPILE}ar RANLIB=${CROSS_COMPILE}ranlib AS=${CROSS_COMPILE}as LD=${CROSS_COMPILE}ld ../../glibc-2.3.5/configure --prefix=/usr --build=i386-redhat-linux --host=arm-unknown-linux-gnu --target=arm-unknown-linux-gnu --without-__thread --enable-add-ons=linuxthreads --with-headers=${SYSROOT}/usr/include && make && make install_root=${SYSROOT} install && echo ok

8、建立全套编译器
#cd ${PREFIX}/src
#mkdir -p BUILD/gcc-3.4.4
#cd BUILD/gcc-3.4.4
9、测试
1)编写一个HelloWorld程序,然后arm-unknown-linux-gnu-gcc helloworld.c -o helloworld
2)file helloworld
aa: ELF 32-bit LSB executable, ARM, version 1, for GNU/Linux 2.0.0, dynamically linked (uses shared libs), not stripped
如果显示出上面的输出,说明你编译了一个能在arm体系结构下运行的 helloworld,证明你的编译工具做成功了。

10、内核镜像(选做)
下载一个26_at91_serial.c.gz文件
1)
cd ${PREFIX}/src/
zcat 26_at91_serial.c.gz > linux/drivers/serial/at91_serial.c
2)
cd ${PREFIX}/src/linux
make zImage
make modules
make INSTALL_MOD_PATH=${SYSROOT} modules_install  
参考地址:http://blog.chinaunix.net/u/27396/showart_256126.html
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值