The GCC package contains the GNU compiler collection, which includes the C and C++ compilers.
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 asCFLAGSandCXXFLAGS, 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 oflibiberty.a. The version oflibiberty.aprovided 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
mkdir -v ../gcc-build cd ../gcc-build
Prepare GCC for compilation
../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++
Compile the package
make
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/libdirectory. To support those packages, create this symlink
ln -sv ../usr/bin/cpp /lib
Many packages use the name cc to call the C compiler. To satisfy those packages, create a symlink
ln -sv gcc /usr/bin/cc
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.