The GCC package contains the GNU compiler collection, which
includes the C and C++ compilers.
Approximate build time: 11.7 SBU
Required disk space: 294 MB
GCC installation depends on: Bash, Binutils, Coreutils,
Diffutils, Findutils, Gawk, Gettext, Glibc, Grep, Make, Perl,
Sed, and Texinfo
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.
Unpack both the gcc-core and the gcc-g++ tarballs—they will
unpack into the same directory. Likewise, extract the gcc-testsuite
package. The full GCC package contains additional compilers.
Instructions for building these can be found at
http://www.linuxfromscratch.org/blfs/view/svn/general/gcc.html.
Apply only the No-Fixincludes patch (not the Specs patch) also used
in the previous chapter:
patch -Np1 -i ../gcc-3.4.1-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.1-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:
mkdir ../gcc-build
cd ../gcc-build
Prepare GCC for compilation:
../gcc-3.4.1/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
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.13, “GCC-3.4.1 -
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.
Installed programs: c++, cc (link to gcc), cpp, g++, gcc,
gccbug, and gcov
Installed libraries: libgcc.a, libgcc_eh.a, libgcc_s.so,
libstdc++.[a,so], and libsupc++.a
Short Descriptions
-
cc
-
The C compiler
-
cpp
-
The C preprocessor; it is used by the compiler to expand the
#include, #define, and similar statements in the source files
-
c++
-
The C++ compiler
-
g++
-
The C++ compiler
-
gcc
-
The C compiler
-
gccbug
-
A shell script used to help create useful bug reports
-
gcov
-
A coverage testing tool; it is used to analyze programs to
determine where optimizations will have the most effect
-
libgcc
-
Contains run-time support for gcc
-
libstdc++
-
The standard C++ library
-
libsupc++
-
Provides supporting routines for the C++ programming language