10.29.1. Installation of GCC
The following patch contains a number of updates to the 4.8.1
branch by the GCC developers:
patch -Np1 -i ../gcc-4.8.1-branch_update-3.patch
Apply a sed
subsitution that will suppress the execution of the fixincludes script:
cp -v gcc/Makefile.in{,.orig}
sed 's@\./fixinc\.sh@-c true@' gcc/Makefile.in.orig > gcc/Makefile.in
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:
mkdir -v ../gcc-build
cd ../gcc-build
Prepare GCC for compilation:
CC="gcc -isystem /usr/include ${BUILD64}" \
CXX="g++ -isystem /usr/include ${BUILD64}" \
LDFLAGS="-Wl,-rpath-link,/usr/lib64:/lib64:/usr/lib32:/lib32:/usr/lib:/lib" \
../gcc-4.8.1/configure --prefix=/usr --libdir=/usr/lib64 \
--libexecdir=/usr/lib64 --enable-shared --enable-threads=posix \
--enable-__cxa_atexit --enable-c99 --enable-long-long --with-abi=64 \
--enable-clocale=gnu --enable-languages=c,c++ --disable-libstdcxx-pch \
--enable-cloog-backend=isl --disable-isl-version-check --with-system-zlib \
--enable-checking=release --enable-libstdcxx-time \
--disable-install-libiberty
Compile the package:
make
Important
The test suite for GCC is considered critical. Do not skip it
under any circumstance.
Increase the stack size prior to running the tests:
ulimit -s 32768
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.8.1/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
Finally, move some misplaced files:
mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib
mv -v /usr/lib32/*gdb.py /usr/share/gdb/auto-load/usr/lib32
mv -v /usr/lib64/*gdb.py /usr/share/gdb/auto-load/usr/lib64