6.14.1. Installation of GCC

This package is known to have issues when its default optimization
flags (including the -march and
-mcpu options) are changed. If
any environment variables that override default optimizations have
been defined, such as CFLAGS and CXXFLAGS, unset them when building GCC.

Apply only the No-Fixincludes patch (not the Specs patch) also used
in the previous chapter:

patch -Np1 -i ../gcc-3.4.3-no_fixincludes-1.patch

GCC fails to compile some packages outside of a base Linux From
Scratch install (e.g., Mozilla and kdegraphics) when used in
conjunction with newer versions of Binutils. Apply the following
patch to fix this issue:

patch -Np1 -i ../gcc-3.4.3-linkonce-1.patch

Apply a sed
substitution that will suppress the installation of libiberty.a. The version of libiberty.a provided by Binutils will be used
instead:

sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in

The GCC documentation recommends building GCC outside of the source
directory in a dedicated build directory:

Important

In this section, the test suite for GCC is considered critical.
Do not skip it under any circumstance.

Test the results, but do not stop at errors:

make -k check

Some of the errors are known issues and were noted in the previous
chapter. The test suite notes from Section 5.11, “GCC-3.4.3 -
Pass 2,” are still relevant here. Be sure to refer back
to them as necessary.

Install the package:

make install

Some packages expect the C preprocessor to be installed in the
/lib directory. To support those
packages, create this symlink:

ln -s ../usr/bin/cpp /lib

Many packages use the name cc to call the C compiler. To satisfy
those packages, create a symlink:

ln -s gcc /usr/bin/cc

Note

At this point, it is strongly recommended to repeat the sanity
check performed earlier in this chapter. Refer back to Section 6.12,
“Re-adjusting the Toolchain,” and repeat the
check. If the results are in error, then the most likely reason
is that the GCC Specs patch from Chapter 5 was erroneously
applied here.