基于MIPS的uBoot编译环境搭建

工作需要,准备在mips上移植一下uBoot,搞了两天才搞定,现将环境搭建方法记录如下:

一.编译工具的准备
    由于uBoot的MIPS部分采用mips_4kc-gcc编译,因而不能使用cygwin下的gnu开发包mips-elf-gcc,主要是由于uBoot中运用了GP
指针,使用mips-elf-gcc的时候可能会进行重定位,因而无法正常工作。好了,到这儿我们就一心一意的搭建基于mips_4KC-gcc工具链的编译环境了。
    step1:到http://sourceforge.net/projects/U-Boot上下载最新的uBoot源码
    step2:解压uBoot后,仔细阅读根目录下的readme文档,在此你可以对uBoot的整个结构有个大概了解。同时它会告诉你uBoot的
编译环境需要ELDK(embedded linux develop kit)。
    step3:到ftp://ftp.sunet.se/pub/Linux/distributions/eldk/4.1上去下载mips的开发包,注意这里最好下载iso文件,如果
你不想自己去编译的话。很遗憾的告诉你,ELDK无法在sygwin下安装,因而要么你使用Linux系统,要么你就得安装vmware,我采用的安装vmware方案
    step4:下载一个vmware软件,还有一个Linux的安装文件,本人使用的是vmware6 + RedHat9。

 

二.编译环境的安装
    step1:安装vmware6.0,并在里面安装Redhat9。这个就没什么好说的。
    step2:安装vmware tools,这个主要是为了使用vmware的share folder功能,以方便我们使用windows下的资源,这里主要是要
用我们前面下载的uBoot。
           先将vm的共享文件功能打开,并设置好目录。然后在系统中讲cdrom挂载,此时可以看到cdrom中有一个rpm包,将它copy
出来并安装。如果成功的话,此时在/mnt下应该多了一个hgfs目录,里面就是刚才设置的windows下的那个目录。
    step3:将下载的ELDK镜像文件挂在cdrom下,这一步可直接运用vm的功能即可,方法同前面linux安装时使用镜像一样。在系统
中将将光盘mount上去,然后cp到系统的任意一个目录下,比如(/tmp)。然后将目录下的文件加上执行的权限“chmod -R +x 目录”,剩下的就是安装即可。
    step4:在共享目录下uBoot包解压。到此一切准备工作完毕。

 

三.开始编译
    step1:在你自己的工作目录下(我使用的是root)修改.bash_profile文件,在里面加入你安装的ELDK的/bin和/usr/bin两个路
径。
    step2:转到uBoot的根目录,依次执行以下命令:
           make distclean
           make incaip_config
           make
           如果进行顺利的话,此时应该在uBoot根目录下出现uBoot.bin了,呵呵,大功告成!

 

*************************************************************************

几点补充:
    1. 不要用winrar解压uBoot包,因为里面有两个文件的后缀名重复,原因在于windows不区分大小写
    2. 不要在share目录下编译uBoot,因为共享目录下会使ELDK的ln报错
    3. 有些机器在安装vmware后会出现时钟与系统时钟不同步,从而导致make出错,无法顺利进行。此时应该安装vmware tools中
的tar工具包,并依次执行以下步骤:
       step1: 在text mode下执行/usr/bin/vmware-config-tools.pl,打开时钟附加功能
       step2: 在x-windows下执行vmware-toolbox,将option中的与主机时间同步选上
       step3: 在/boot/grub/grub.conf中的kernel行末尾加入clock = pit

驱动器 D 中的卷是 LINUX 卷的序列号是 4471-561B D:\桌面\mips交叉编译环境 的目录 2009-10-22 20:27 <DIR> . 2009-10-22 20:27 <DIR> .. 2009-10-22 20:09 27,425,338 gcc-3.4.3.tar.bz2 2009-10-22 20:08 7,421,782 binutils-2.10.91.0.2.tar.bz2 2009-10-22 20:08 242,445 glibc-linuxthreads-2.5.tar.bz2 2009-10-22 20:10 20,544,628 glibc-2.5.tar.gz 2009-10-22 20:20 1,720 elf-machine-rela-mips.dpatch 2009-10-22 20:26 4,727 建立基于linuxMIPS交叉编译环境 .txt 6 个文件 55,640,640 字节 2 个目录 6,793,084,928 可用字节 三、构建过程 1、准备环境 目标平台: mipsel-linux(即little endian,x86也是little endian的,不懂的话自己到网上查资料吧) 安装目录: /usr/local/crossdev 源代码安装目录: /usr/local/src 注:没有的目录请自行建立。 2、准备MIPS环境的头文件 我们是在i386下编译的,但要使用MIPS的头文件定义才能正确编译MIPS的交叉编译工具。这些头文件都在kernel源程序中。 cd /usr/local/src/ tar xzvf linux-2.4.2.tar.gz cd linux/ make ARCH=mips menuconfig 在"CPU selection"中, 选中"(R3000) CPU type",也可以选你实际的MIPS平台的CPU类型 在"General setup"中, 选中"Generate little endian code" make dep mkdir -p /usr/local/crossdev/mipsel-linux/include cp -r /usr/local/src/linux/include/asm-mips /usr/local/crossdev/mipsel-linux/include/asm cp -r /usr/local/src/linux/include/linux /usr/local/crossdev/mipsel-linux/include/ 3、编译binutils cd /usr/local/src/ tar xzvf binutils-2.11.90.0.31.tar.gz cd binutils-2.11.90.0.31/ ./configure --target=mipsel-linux --prefix=/usr/local/crossdev make make install export PATH=/usr/local/crossdev/bin:$PATH 4、编译自举的(bootstrap)gcc 因为这时还没有MIPS的glibc库可以使用,只能编译一个最简单的gcc,用这个gcc编译出glibc后就可以再编译一个完成的gcc了。 cd /usr/local/src/ tar xzvf gcc-3.0.2.tar.gz cd gcc-3.0.2/ ./configure --target=mipsel-linux --prefix=/usr/local/crossdev --enable-languages=c --with-newlib --disable-shared make make install 注:以上编译安装的工具已经可以直接编译MIPS的kernel(make zImage)了。 5、编译glibc 现在可以使用刚才建立的binutils和gcc来编译MIPS的glibc了。 cd /usr/local/src/ tar xzvf glibc-2.2.3.tar.gz cd glibc-2.2.3/ tar xzvf ../glibc-linuxthreads-2.2.3.tar.gz patch -p1 < ../glibc-2.2.3-mips-base-addr-got.diff CC=mipsel-linux-gcc AR=mipsel-linux-ar RANLIB=mipsel-linux-ranlib ./configure --host=mipsel-linux --prefix=/usr/local/crossdev/mipsel-linux --enable-add-ons=linuxthreads make make install 6、重新编译完整的gcc cd /usr/local/src/ rm -rf gcc-3.0.2/ tar xzvf gcc-3.0.2.tar.gz cd gcc-3.0.2/ ./configure --target=mipsel-linux --prefix=/usr/local/crossdev --enable-languages=c,c++ make make install 以上就构建好了一套自己的MIPS交叉编译环境,目录在/usr/local/crossdev下,你可以把它打包拷贝到其它i386的Linux系统下也能使用。 要使用其来交叉编译时请先加上PATH环境变量:export PATH=/usr/local/crossdev/bin:$PATH
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值