现在的位置: 首页 > 综合 > 正文

制作mipsel-linux交叉编译工具1

2014年12月13日 ⁄ 综合 ⁄ 共 3092字 ⁄ 字号 评论关闭

前言
    在嵌入式开发中,MIPs处理器是常见的几中处理器类型之一。另一方面,Linux是开源软件,应用范围很广, 因其对包括MIPS在内的多种嵌入式处理器架构的良好支持. 因此在嵌入式应用也.也大量采用Linux。在嵌入式开发过程中,很容易获得运行于x86架构PC上的Linux,并可使用其上的丰富的工具。gcc是Linux中一个很著名的C编译器,在编译Linux核心时,就要用到gcc。在PC机的Linux系统中用自身的gcc重新编译Linux核心和其它应用是容易。而嵌入式应用是要求在MIPs架构的平台上布署Linux系统和其上的应用,但在开发的过程中.获得运行于MIPS架构的Linux系统的开发环境几乎是不可能的。
    因此,就提出了交叉编译(cross-compile)的概念.也就是说要在运行于x86架构PC的Linux系统中编译出能在MIPS架构的平台上运行的Linux核心和其上的应用。这样,就可以用PC较强的运算能力,和其Linux系统中的工具完成软件的编写、编译甚至是调试。在下面的章节中.将介绍交叉编译工具链的一般制作过程和mipsel-linux的具体制作步骤。

构造系统介绍
    这是一台运行Linux的PC,因整个过程要完成大量的编译工作,因此推荐使用有较高运算能力的x86兼容PC.如Intel的P4系统。同时,编译过程会需要1G左右的硬盘空间。
    在这个系统上装好RedHat Linux和gcc,以下是实验所用的构造系统的版本信息.供参考:
$uname -a
Linux www.biforee 2.4.20-8 #1 Thu Mar 13 17:54:28 EST
2003 i686 i686 i386 GNU/Lnux
$gcc -v
Reading specs from /usr/lib/gcc -lib/i386 -redhat -linux/3.2.2/
specs
Configured with: ../configure --prefix=/usr  --mandir=/usr/share/
man --infodir=/usr/share/info --enable -shared --enable -threads=
posix --disable -checking --with -system -zlib --enable -_cxa_a-
texit --host=i386-redhat-linux
Thread model:posix
gcc version 3.2.2 20030222 (Red Hat Linux 3.2.2-5)
可以看出,所用的RedHat Linux版本是2.4.20,gcc的版本是3.2.2。

构造中会用到的源代码准备
    在构造过程中,需要准备以下源码供使用:
(1)binutils-2.13:下载地址是ftp://ftp.gnu.org/gnu/binutils/binutils-2.13.tar.gz
(2)gcc-3-2:下载地址是ftp://ftp.gnu.org/gnu/gcc/gcc-3.2.tar.gz
(3)glibc-2.2.5:下载地址是ftp://ftp.gnu.org/gnu/glibc/glibc-2.2.5.tar.gz
(4)glibc-linuxthreads-2.2.5:这是个glibc的补丁下载地址是
ftp://ftp.gnu.org/gnu/glibc/glibc-linuxthreads-2.2.5.tar.gz
(5)glibc-2.2.5-mips-build-gmon.diff:这是另一个glibc的补丁
下载地址是http://www.ltc.com/~brad/mips/glibc-2.2.5-mips-build-gmon.diff
(6)linux-2.4.tar.gz:linux核的源码包.可从网站http://www.linux.org/上下载。用root用户登到Linux系统中.建立工作目录/home/crosstool/tmp.并将上述文件放到这个目录中备用。

4 Linux头文件准备
    这些头文件在编译gcc时要用到,正确构造这些文件,很重要。
a)将HOST的Linux的/usr/include拷贝过来
cp -r /usr/include /home/crosstool/tmp/
b)去除其中的两个目录
rm -r -f /home/crosstool/tmp/include/asm
rm -r -f /home/crosstool/tmp/include/linux
c)解开linux源码包
cd/home/crosstool/tmp
tar xvfz ../linux2.4.tar.gz
d)按Target要求完成核心配置.主要是选择正确的CPU类型和内核部件.使这个内核的配置涵盖目标系统的要求。
cd/home/crosstool/tmp/linux
make clean
make menuconfig
……
参照有关Linux核心配置的说明完成正确的配置过程。
make dep
e)将配置好的核心的两个目录取出
cp -dR include/linux/home/crosstool/tmp/include/
cp -dR include/asm-mips /home/crosstool/tmp/include/asm
至此,头文件已准备好了,可用以下命令查看:
ls /home/crosstool/tmp/include

编译binutils
    这里生成一些binary格式的处理工具,如mipsel-linux-ld、mipsel-linux-objdump等。
(a)解压缩,得到源代码
cd /home/crosstool/tmp
tar xvfz ../binutils-2.13.tar.gz
(b)完成配置和编译。configure会在/home/crosstool/tmp/binutils-2.13/mipsel-linux/目录下生成正确的Makefile;--prefix指出安装binutils的目录前缀,也是这些工具工作时的工作路径前缀;--target指出这些工具服务的目标系统。
cd /home/crosstool/tmp/binutils-2.1 3
mkdir mipsel-linux
cd mipsel-linux
../configure 
--prefix=/usr/locallcross-gcc/mipsel-linux 
--target=mipsel-linux
make
make install
    完成安装后,在/usr/local/cross-gcc/mipsel-linux/bin目录下得到一组工具.其中就有mipsel-linux-ld,执行/usr/local/cross-gcc/mipsel-linux/bin/mipsel-linux-ld -verbose,从输出信息中可看到lib的位置指定SEARCH_DIR ("/usr/local/cross-gcc/mipsel-linux/mipsel-linux/lib");glibc产生的库要放到这里。
(c)输出工作路径,使得后继的操作会找到该步骤建立的工具.命令如下:
PATH =/usr/local/cross -gcc/mipsel -linux/bin: $PATH;export PATH

【上篇】
【下篇】

抱歉!评论已关闭.