您的位置:首页 > 运维架构 > Linux

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

2009-05-25 15:50 330 查看
6 编译静态gcc
因为这时还没有MIPS的glibc库可以使用,只能编译一个最简单的gcc,用这个gcc编译出glibc后就可以再编译一个完整的gcc了。glibc是个共享库,而这时的gcc不能支持glibc,因此,这个gcc也叫“静态gcc”,从另一个角度看,这时的gcc是个简单的gcc,是为了生成后继的完成的gcc而做的。因此,也被称为“自举gcc”。
如果只是为了编译Linux核心代码,完成这个步骤就可以了。
(a)解压缩,得到源代码。
cd /home/crosstool/tmp
tar xvfz ../gcc-3.2.tar.gz
(b)完成配置和编译。这时,建立目录mipsel-linux-static来进行工作。而在下面的工作中,会在同一位置建立另一个目录,用于完整版gcc的编译;--prefix使用和上面步骤一样的设置,可使工具成套安装协同工作;--disable-shared表示不能使用glibc;--with -headers是重要的,它指出编译时,要使用在之前准备好的头文件
cd gcc-3.2
mkdir mipsel-linux-tatic
cd mipsel-linux-static
../configure --target=mipsel-linux --enable-languages=c
--prefix=/usr/local/cross-gcc/mipsel-linux
--disable-shared
--with-headers=/home/crosstool/tmp/include
在configure过程中,可以看到输出这样的一条信息:
Copying /home/crosstool/tmp/include to /usr/local/cross--gcc/mipsel-linux/mipsel-linux/sys-include
表明.已将指定的头文件/home/crosstool/tmp/include
复制到目标位置/usr/local/cross-gcc/mipsel-linux/mipsel-linux/sys-include使用。这点是重要的,在后面的步骤中还要用到这个目录。
make
make install
7 编译glibc
现在,用前面生成的gcc和binutils来生成能工作于目标平台MIPS的glibc库。
(a)解压缩,得到源代码
cd /home/crosstool/tmp
tar xvfz ../glibc-2-2.5.tar.gz
(b)完成配置和编译
cd glibc-2.2.5
patch-i ../../gibc-2.2.5-mips-build-gmon.diff
如果报告有文件找不到,只要回答一下正确的文件名,帮其找到。
tar -xzf ../../glibc-linuxthreads-2.2.5.tar.gz
mkdir mipsel-glibc
cd mipsel-glibc
CFLAGS="-O2 -g -finline-limit=10000"
../configure --build=i686-linux
--host=mipsel-linux
--enable-add-ons
--prefix=/usr/local/cross-gcc/mipsel-linux
--build表示在i686-linux上编译glibc;--host表示glibc是用mipsel-linux格式的;--prefix的和前面的步骤有一样的含义。
make
make install install root=/home/crosstool/tmp/glibc-2.2.5-inst
先安装在一个临时的位置。再将文件传过去。
(c)将生成的lib传送到指定位置
将lib传到/usr/local/cross-gcc/mipsel-linux/mipsel-linux/lib
cp -r/home/crosstool/tmp/glibc-2.2.5-inst/usr/local/cross-gcc/mipsel-linux/lib/
/usr/local/cross-gcc/mipsel-linux/mipsel-linux/
这个位置就是前面谈到的mipsel-linux-ld会搜索的目录。
(d)修改libc.so中的路径
vi /usr/local/cross-gcc/mipsel-linux/mipsel-linux/lib/libe.so 校正其中两个文件的路径

GROUP (/usr/local/cross-gcc/mipsel -linux/mipsel -linux/lib/libc.so.6
/usr/local/cross -gcc/mipsel -linux/mipsel -linux/lib/libc_non-shared.a)
(e)将生成的include传送到正确位置
将/usr/local/cross-gcc/mipsel-linux/mipsel-linux/mipsel-linux/sys-include改名为include
cd /usr/local/cross-gcc/mipsel-linux/mipsel-linux/
mv sys-include include
将include文件传到/usr/local/cross-gcc/mipsel-linux/mipsel-linux/include
cp -r-f /home/crosstool/tmp/glibc-2.2.5-inst/usr/local/cross-
gcc/mipsel-linux/include//usr/local/cross-gcc/mipsel-linux/mipsel-linux/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: