The GCC package contains the GNU compiler collection, which includes the C and C++ compilers.
The following patch contains a number of updates to the 4.8.3 branch by the GCC developers:
patch -Np1 -i ../gcc-4.8.3-branch_update-1.patch
Apply a sed substitution that will suppress the execution of the fixincludes script:
sed -i 's@\./fixinc\.sh@-c true@' gcc/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:
SED=sed CC="gcc -isystem /usr/include" \ CXX="g++ -isystem /usr/include" \ LDFLAGS="-Wl,-rpath-link,/usr/lib:/lib" \ ../gcc-4.8.3/configure --prefix=/usr \ --libexecdir=/usr/lib --enable-threads=posix \ --enable-__cxa_atexit --enable-clocale=gnu --enable-languages=c,c++ \ --disable-multilib --disable-libstdcxx-pch \ --with-system-zlib --enable-checking=release --enable-libstdcxx-time
The meaning of the new configure option:
SED=sed
This prevents a hard-coded path to /tools/bin/sed in the fixincl program.
Compile the package:
make
Due to GCC's critical role in a properly functioning system, the CLFS developers strongly recommend running the testsuite.
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.3/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
Install the libiberty header file
that is needed by some packages:
cp -v ../gcc-4.8.3/include/libiberty.h /usr/include
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 a misplaced file:
mv -v /usr/lib/libstdc++*gdb.py /usr/share/gdb/auto-load/usr/lib
The C preprocessor; it is used by the compiler to expand the #include, #define, and similar statements in the source files
A coverage testing tool; it is used to analyze programs to determine where optimizations will have the most effect
GNU implementation of the OpenMP API for multi-platform shared-memory parallel programming in C/C++ and Fortran
Contains routines used by various GNU programs, including getopt, obstack, strerror, strtol, and strtoul
The GNU Transactional Memory Library, which provides transaction support for accesses to a process's memory
The libmudflap libraries are used by GCC for instrumenting pointer and array dereferencing operations.