GCC 软件包包含 GNU 编译器,其中有C和C++编译器。
如果你把这个包缺省的优化参数(包括 -march 和 -mcpu 参数)改变的话,它会有些不正常的表现。因此,如果你定义了任何优化参数的话,比如 CFLAGS 和 CXXFLAGS,我们劝你在编译 GCC 时 unset 或修改它们。
首先,运用前一章里用过的 No-Fixincludes 补丁:
patch -Np1 -i ../gcc-3.4.3-no_fixincludes-1.patch
在一个超越基本LFS(如安装了Mozilla和KDE)的系统上,当 GCC 联合使用 Binutils 的新版本进行一些软件包的编译的时候会失败。下面这个补丁可以修正这个错误:
patch -Np1 -i ../gcc-3.4.3-linkonce-1.patch
使用一个 sed 命令来禁止 GCC 安装它自己的 libiberty.a。我们将使用 Binutils 附带的 libiberty.a 来代替:
sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in
GCC 的安装指南推荐用一个新建的目录来编译它,而不是在源码目录中:
mkdir ../gcc-build cd ../gcc-build
为编译 GCC 做准备:
../gcc-3.4.3/configure --prefix=/usr \ --libexecdir=/usr/lib --enable-shared \ --enable-threads=posix --enable-__cxa_atexit \ --enable-clocale=gnu --enable-languages=c,c++
编译软件包:
make
本节的GCC测试套件很重要。在任何情况下都不要省略这一步。
运行测试套件,但遇到错误不停止(你还记得那些老是出错的测试吧):
make -k check
Section 5.11, “GCC-3.4.3 - Pass 2, ”里的测试套件说明对这里也同样适用,请参考一下它的内容。
安装软件包:
make install
有的软件包希望 C PreProcessor(预处理器)安装在 /lib 目录下,为了满足它们的要求,我们创建如下符号链接:
ln -s ../usr/bin/cpp /lib
许多软件包使用 cc 作为 C 编译器的名字,为了满足它们的要求,创建如下符号链接:
ln -s gcc /usr/bin/cc
这里,我们强烈推荐运行一下本章前面进行过的合理性测试。请参考 Section 6.12 “再次调整工具链” 并重复测试。如果结果错了,可能是因为你没有正确使用 Chapter 5 的GCC Specs补丁。