5.12. Installing GCC-3.2

Estimated build time:           9.48 SBU
Estimated required disk space:  326 MB

5.12.1. 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:

patch -Np1 -i ../gcc-3.2.patch &&
patch -Np1 -i ../gcc-3.2-nofixincludes-2.patch &&
mkdir ../gcc-build &&
cd ../gcc-build &&
../gcc-3.2/configure --prefix=/static --enable-languages=c \
   --disable-nls --disable-shared &&
echo "#define HAVE_GAS_HIDDEN 1" >> gcc/auto-host.h &&
make BOOT_LDFLAGS=-static bootstrap &&
make prefix=$LFS/static install &&
ln -s gcc $LFS/static/bin/cc

5.12.2. Command explanations

patch -Np1 -i ../gcc-3.2.patch: This patch fixes a few bugs. In particular it contains the "copy fix" and "var fix" documented at http://www.zipworld.com.au/~gschafer/lfs-tweaks.html.

patch -Np1 -i ../gcc-3.2-nofixincludes-2.patch: This prevents the fixincludes script from running.

--prefix=/static: This is NOT a typo. GCC hard codes some paths while compiling and so we need to pass /static as the prefix during ./configure. We pass the real install prefix during the make install command later.

--enable-languages=c: This builds the C compiler. The C++ compiler will be built in Chapter 6, when we rebuild GCC. Other compilers are available as well. If they are needed, the --enable-languages parameter may be omitted.

echo "#define HAVE_GAS_HIDDEN 1": This defines the .hidden assembler directive so that we don't build a faulty Glibc later on.

make BOOT_LDFLAGS=-static: This is the equivalent to make LDFLAGS=-static as we use with other packages to compile them statically.

ln -s gcc $LFS/static/bin/cc: This creates the $LFS/static/bin/gcc symlink, which some packages need.

5.12.3. Contents of GCC

Last checked against version 3.1. Descriptions

5.12.4. 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