这个软件包的详细内容位于 Section 6.9.4, “Glibc 的内容 ”
Glibc 包含主要的 C 库。这个库提供了基本例程, 用于分配内存、搜索目录、 打开关闭文件、 读写文件、 字串处理、 模式匹配、 数学计算等等。
Glibc 文档推荐在源码目录之外的一个专门的编译目录下进行编译:
mkdir -v ../glibc-build cd ../glibc-build
因为 Glibc 不在支持 i386, 所以,它的开发者建议在用户在x86机器上编译Glibc时,要使用 -march=i486
这个编译器标志。 有几种办法可以实现这一点, 但是, 测试显示, 最好是将标志放在内建变量 “CFLAGS” 里面。Glibc 的内建系统使用 CFLAGS 并不是不可改变的,也可以通过使用 专门的文件 configparms
来向CGAGS内容里附加新的标志。 当设置 -march 标志时,也有必要设置 -mtune=native 标志来为 -mtune 重置一个被更改的合理值。
case `uname -m` in i?86) echo "CFLAGS += -march=i486 -mtune=native" > configparms ;; esac
接下来,为编译 Glibc 做准备:
../glibc-2.11.1/configure --prefix=/tools \ --host=$LFS_TGT --build=$(../glibc-2.11.1/scripts/config.guess) \ --disable-profile --enable-add-ons \ --enable-kernel=2.6.18 --with-headers=/tools/include \ libc_cv_forced_unwind=yes libc_cv_c_cleanup=yes
配置选项的含义:
--host=$LFS_TGT,
--build=$(../glibc-2.11.1/scripts/config.guess)
这些参数的综合结果是,Glibc 使用 /tools
目录下的交叉链接器和交叉编译器, 构建自己的系统配置,以便进行交叉编译。
--disable-profile
它关掉了分析(profiling)信息相关的库文件编译。如果你打算在这个临时工具中做分析, 就必需省掉这个参数。
--enable-add-ons
这个选项告诉 Glibc 使用附加的 NPTL 包作为它的线程库。
--enable-kernel=2.6.18
这个选项告诉 Glibc 编译支持2.6.18版 和更新版 Linux内核的库。 对于使用旧版内核的变通方法是不启用该参数。
--with-headers=/tools/include
这个参数指示 Glibc 按照前面刚刚安装到 tools 目录中的内核头文件编译自己, 从而准确的 知道内核的特性以根据这些特性对自己进行最佳化编译。
libc_cv_forced_unwind=yes
在 Section 5.4, “Binutils-2.20 - 第一遍” 交叉编译过程中安装的链接器,在安装完Glibc 以前都无法使用。也就是说这个配置的 forced unwind支持测试会失败, 因为它依赖运行中的链接器。 设置 libc_cv_forced_unwind=yes 这个选项是为了通知 configure 支持 force-unwind, 而不需要进行测试。
libc_cv_c_cleanup=yes
类似的, 我们在 configure 脚本中使用 libc_cv_c_cleanup=yes,以便配置成跳过测试而支持C语言清理处理。
在这个阶段你可能会看到下面的警告:
configure: WARNING: *** These auxiliary programs are missing or *** incompatible versions: msgfmt *** some features will be disabled. *** Check the INSTALL file for required versions.
抱怨说缺少或有不兼容的 msgfmt 程序,这没有什么大问题,msgfmt 程序是宿主系统 Gettext 应当提供的一部分。
编译这个软件包:
make
这个软件包附带一个测试组件, 然而,现在还无法运行,因为我们还没有C++编译器。
为了成功运行,这个测试套件还需要安装 Locale 数据。 Locale 数据为系统提供相关信息, 如日期、时间和接受的货币格式, 以及系统工具的输出。 如果在本章不运行测试套件(按照建议), 现在就不必安装 locales。 在下章将安装适当的 locales。如果一定要安装Glibc locales,请参考 Section 6.9, “Glibc-2.11.1.”
安装这个软件包:
make install
这个软件包的详细内容位于 Section 6.9.4, “Glibc 的内容 ”