这一节的内容是关於如何将 glibc 2 安装成测试用的函式库。 所有编译的程式都连结到你目前的函式库, 除非你给了某些额外的参数才会连结到新的函式库。 由於路径被编译到某些档案中,你需要由原始码来安装这函式库。
在一台安装有 64MB 记忆体 i586@133 的机器上, 编译完整的函式库 (包括附加套件) 大约须要 3 小时。 而在 i686@200 则须约一个半小时。
你必需由 archive 中取出原始码。如此才能编译它,最好的方式如下:
 tar xzf glibc-2.0.6.tar.gz
 cd glibc-2.0.6
 tar xzf ../glibc-linuxthreads-2.0.6.tar.gz
 tar xzf ../glibc-crypt-2.0.6.tar.gz
 tar xzf ../glibc-localedata-2.0.6.tar.gz
 
在 glibc-2.0.6 的目录底下,建立一个新的目录 compile,并且 cd 到 compile 底下, 所有的工作都会在这个目录中完成,这会简化後续的清除工作。 (发展者似乎并未让 'make clean' 作得很好)
 mkdir compile
 cd compile
 
../configure。
要使用父加套件,你必需用 --enable-add-ons 指定,
例如说 --enable-add-ons=linuxthreads,crypt,localedata。
你也必需指定要安装的目录,/usr/i486-linuxglibc2 是个不错的选择, 这样的 configure 命令如下:
 ../configure --enable-add-ons=linuxthreads,crypt,localedata --prefix=/usr/i486-linuxglibc2
 
要编译与验证,执行
 make
 make check
 
 make install
 
ld.so 到 /lib/ld-linux.so.2:
 ln -s /usr/i486-linuxglibc2/lib/ld-linux.so.2 /lib/ld-linux.so.2
 
/etc/ld.so.conf。
你需要增加新的函式库所在的路径到档案的最後,
这路径应该是 <prefix>/lib。
假如用以上的选择就应该是 /usr/i486-linuxglibc2/lib。
在你修改了 /etc/ld.so.conf 之後,执行:
 ldconfig -v
 
安装的最後一步是更新 /usr/lib/gcc-lib
以使 gcc 知道如何使用新的函式库。
首先,你需要复制目前的组态,要知道目前的组态,使用 gcc 的 -v 选项:
 % gcc -v
 Reading specs from /usr/lib/gcc-lib/i486-unknown-linux/2.7.2.2/specs
 gcc version 2.7.2.2
 
/usr/lib/gcc-lib/<系统> 复制到新的测试系统目录:
 cd /usr/lib/gcc-lib/
 cp -r i486-unknown-linux i486-linuxglibc2
 
 cd /usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2
 
specs。在这档案中,
将 /lib/ld-linux.so.1 换成 /lib/ld-linux.so.2,
你也必需要移去档案中所有的 %{...:-lgmon} 表示式,
因为 glibc 不使用 gmon 函式库来做 profile。
你可以在
Specs 档□例找到一个□例。
你需要在你的 include 目录下建立连结到其它的 include 目录:
 cd /usr/i486-linuxglibc2/include
 ln -s /usr/src/linux/include/linux
 ln -s /usr/src/linux/include/asm
 ln -s /usr/X11R6/include/X11
 
/usr/include 复制或连结这些档案。
(有些函式库需要重新用 glibc2 来 compile,在这种情形下,
只要编译并且安装到 /usr/i486-linuxglibc2)
要测试安装是否成功,建立一档案 glibc.c 如下:
 #include <stdio.h>
 main()
 {
     printf("hello world!\n");
 }
 
 % gcc -b i486-linuxglibc2 -nostdinc -I/usr/i486-linuxglibc2/include -I/usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2/include glibc.c -o glibc
 
 % ldd glibc
 libc.so.6 => /usr/i486-linuxglibc2/lib/libc-2.0.5.so (0x4000d000)
 /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)