- 论坛徽章:
- 1
|
本帖最后由 snow888 于 2012-04-13 00:16 编辑
好了,下面我们需要系统的基本库了,来,我们继续。
下面我们需要安装 glibc 了,这个软件包是什么?用过 Unix 系统的朋友都知道,这个咚咚相当于我们系统中的 /lib 、 /usr/lib 、/usr/local/lib 目录下的所有文件,是我们的系统能够得以正确运行的基础支撑库文件。
不多解释了,需要详细了解这个咚咚中间每个包得作用的朋友,可以自己去 google ,或者到 www.gnu.org 上去看看文档(得先打好 E 文基础哦 ^_^.)
我们还是构建一个新的编译目录
$ mkdir glibc_build
$ cd glibc_build
$ ../glibc-2.3.6/configure --prefix=/My_Operation/myuser/tmptools ----disable-profile --enable-add-ons \
--enable-kernel=2.6.0 --with-binutils=/My_Operation/myuser/tmptools/bin \
--without-gd --with-headers=/My_Operation/myuser/tmptools/include \
--without-selinux
这个地方解释一下:
--enable-addd-ons ;;这个指示 Glibc 使用附加的 NPTL 包作为线程库。
--enable-kernel=2.6.0 ;;通知Glibc 编译出支持 2.6.x 内核的库。
--with-binutils=/My_Operation/myuser/tmptools/bin ;;指定在编译 glibc 时使用我们前面构建的 binutils 工具 ( ld 除外,我们将它改名了)
--without-gd ;;保证不生成 memusagestat 程序,这个程序会顽固地将我们生成的库文件连接到宿主系统的库文件(libgd, libpng, libz 等等)。
--with-headers=/My_Operation/myuser/tmptools/include ;; 指定我们使用自己安装的 linux 内核头文件
--without-selinux ;; 我们不打算安装 selinux ,如果要安装这个咚咚,那么我们在这里需要打开。
$ make
$ make install
激动人心的时刻到来了
下面我们开始调整工具链,让我们前面构建的环境出现一个能彻底脱离母体环境的工具链。
step 1)
进入 /My_Operation/myuser/tmptools/bin 目录,将我们的 ld-new 改成 ld
$ cd /My_Operation/myuser/tmptools/bin
$ mv ld-new ld
step 2)
进入 /My_Operation/myuser/tmptools/i686-pc-linux-gnu/bin 目录,将我们的 ld-new 改成 ld
$ cd /My_Operation/myuser/tmptools/i686-pc-linux-gnu/bin
$ mv ld-new ld
step 3)
进入 /My_Operation/myuser/tmptools/lib/gcc/i686-pc-linux-gnu/4.0.3 目录,修改我们的链接配置文件 specs
$ cd /My_Operation/myuser/tmptools/lib/gcc/i686-pc-linux-gnu/4.0.3
$ vi specs
将其中的 /lib/ld-linux.so.2 全部修改成 /My_Operation/myuser/tmptools/lib/ld-linux.so.2
修改完成以后,我们来测试一下:
进入 /tmp 目录,编写一个测试文件:a.c- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- int main ( void )
- {
- puts(" I am test program file!\n");
- return 0;
- }
复制代码 设置你的环境变量,启用你刚才构建的编译环境:
$ export PATH=/My_Operation/myuser/tmptools/bin:$PATH
编译你的测试程序:
$ gcc -o a a.c
检查你刚才编译的文件,看看编译的信息
$ ldd a
看看输出了什么信息?
是不是有点成就感了?到现在为止,你已经成功了 三分之一了。
时间关系,今天就暂时先讲到这里。 |
|