10.10.1. Installation of GCC
The following patch enables fixes compilation errors with the
kernel:
patch -Np1 -i ../gcc-4.2.4-PR31490-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
GCC provides a gccbug
script which detects at compile time whether mktemp is present, and
hardcodes the result in a test. If mktemp is not found, the script
will fall back to using less random names for temporary files. We
will be installing mktemp later, so the following sed will simulate
its presence:
sed -i 's/@have_mktemp_command@/yes/' gcc/gccbug.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-4.2.4/configure --prefix=/usr \
--libexecdir=/usr/lib --enable-shared --enable-threads=posix \
--enable-__cxa_atexit --enable-c99 --enable-long-long \
--enable-clocale=gnu --enable-languages=c,c++ \
--disable-multilib --disable-libstdcxx-pch
Compile the package:
make bootstrap
Important
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
The -k
flag is used to make
the test suite run through to completion and not stop at the first
failure. The GCC test suite is very comprehensive and is almost
guaranteed to generate a few failures. To receive a summary of the
test suite results, run:
../gcc-4.2.4/contrib/test_summary
For only the summaries, pipe the output through grep -A7 Summ
.
A few unexpected failures cannot always be avoided. The GCC
developers are usually aware of these issues, but have not resolved
them yet.
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 -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