Installing GCC-3.2

Estimated build time:           13.26 SBU
Estimated required disk space:  221 MB

Installation of GCC

This package requires its patch to be applied before you can install it. Make sure it's unpacked before running the installation commands.

This package is known to behave badly when you have changed its default optimization flags (including the -march and -mcpu options). GCC is best left alone. Therefore, if you have defined any environment variables that override default optimizations, such as CFLAGS and CXXFLAGS, we recommend unsetting or modifying them when building Gcc. You have been warned.

Install GCC by running the following commands. These commands will build the C and C++ compiler. Other compilers are available within the gcc package. If you want to build all the other available compilers too, leave out the --enable-languages=c,c++ option in the configure command. See the GCC documentation for more details on which additional compilers are available.

Note: the build of other compilers is not tested by the people who actively work on LFS.

patch -Np1 -i ../gcc-3.2.patch &&
mkdir ../gcc-build &&
cd ../gcc-build &&
../gcc-3.2/configure --prefix=/usr --enable-shared \
    --enable-languages=c,c++ --enable-threads=posix \
    --with-slibdir=/lib --enable-__cxa_atexit \
    --enable-clocale=gnu &&
make bootstrap &&
make install &&
ln -s ../usr/bin/cpp /lib &&
ln -s ../bin/cpp /usr/lib &&
ln -s gcc /usr/bin/cc

Command explanations

--enable-threads=posix: This enables C++ exception handling for multithreaded code.

--enable-__cxa_atexit: This option will result in C++ shared libraries and C++ programs that are interoperable with other linux distributions.

--enable-clocale=gnu: There is a risk that some people will build ABI incompatible C++ libraries if they didn't install all of the glibc localedata. Using --enable-clocale=gnu ensures that the "right thing" is done in all cases. If you don't wish to use this option, then at least build the de_DE locale. When GCC finds this specific locale, then the correct locale mode (gnu) is implemented.

Contents of GCC

Last checked against version 3.1.

Program Files

c++, c++filt, cc (link to gcc), cc1, cc1plus, collect2, cpp, cpp0, g++, gcc, gccbug, gcov and tradcpp0

Descriptions

cc, cc1, cc1plus, gcc

These are the C compiler. A compiler translates source code in text format to a format that a computer understands. After a source code file is compiled into an object file, a linker will create an executable file from one or more of these compiler generated object files.

c++, cc1plus, g++

These are the C++ compiler, the equivalent of cc and gcc etc.

c++filt

The C++ language provides function overloading, which means that it is possible to write many functions with the same name (providing each takes parameters of different types). All C++ function names are encoded into a low-level assembly label (this process is known as mangling). The c++filt program does the inverse mapping: it decodes (demangles) low-level names into user-level names so that the linker can keep these overloaded functions from clashing.

collect2

collect2 assists with the compilation of constructors.

cpp, cpp0

cpp pre-processes a source file, such as including the contents of header files into the source file. Simply add a line, such as #include <filename>, to your source file. The preprocessor will insert the contents of the included file into the source file.

gccbug

gccbug is a shell script which is used to simplify the creation of bug reports.

gcov

gcov analyzes programs to help create more efficient, faster running code through optimization.

tradcpp0

No description is currently available.

Library Files

libgcc.a, libgcc_eh.a, libgcc_s.so, libiberty.a, libstdc++.[a,so], libsupc++.a

Descriptions

libgcc, libgcc_eh, libgcc_s

Run-time support files for gcc.

libiberty

libiberty is a collection of subroutines used by various GNU programs including getopt, obstack, strerror, strtol and strtoul.

libstdc++

libstdc++ is the C++ library. It is used by C++ programs and contains functions that are frequently used in C++ programs. This way the programmer doesn't have to write certain functions (such as writing a string of text to the screen) from scratch every time he creates a program.

libsupc++

libsupc++ provides support for the c++ programming language. Among other things, libsupc++ contains routines for exception handling.

GCC Installation Dependencies

Last checked against version 2.95.3.

Bash: sh
Binutils: ar, as, ld, nm, ranlib
Diffutils: cmp
Fileutils: chmod, cp, ln, ls, mkdir, mv, rm, touch
Find: find
Gcc: cc, cc1, collect2, cpp0, gcc
Grep: egrep, grep
Make: make
Patch: patch
Sed: sed
Sh-utils: basename, dirname, echo, expr, hostname, sleep, true, uname
Tar: tar
Texinfo: install-info, makeinfo
Textutils: cat, tail, tr