6.11.2. Installation of GCC
The following patch contains a number of updates to the
4.4.1 branch by the GCC developers:
patch -Np1 -i ../gcc-4.4.1-branch_update-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:
cp libiberty/Makefile.in{,.orig}
sed 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in.orig > \
libiberty/Makefile.inGCC provides a gccbug script which detects at
compile time whether mktemp is present, and hardcodes
the result in a test. If mktemp is not found, the
script will fall back to using less random names for temporary files.
mktemp will be installed as part of Coreutils
later, so the following sed will simulate its presence:
cp gcc/gccbug.in{,.orig}
sed 's/@have_mktemp_command@/yes/' gcc/gccbug.in.orig > gcc/gccbug.inThe fixincludes script attempts to "fix"
the system headers installed so far. Since GCC is cross-compiled expecting
the system headers to be in /usr/include,
the script will be looking at the host system's headers. The following sed
prevents fixincludes from running:
cp gcc/Makefile.in{,.orig}
sed 's@\./fixinc\.sh@-c true@' gcc/Makefile.in.orig > gcc/Makefile.inThe 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:
LDFLAGS="-Wl,-rpath-link,${CLFS}/cross-tools/${CLFS_TARGET}/lib" \
../gcc-4.4.1/configure --prefix=/usr --libexecdir=/usr/lib \
--build=${CLFS_HOST} --host=${CLFS_TARGET} --target=${CLFS_TARGET} \
--enable-shared --enable-threads=posix --enable-__cxa_atexit \
--enable-c99 --enable-long-long --enable-clocale=gnu \
--enable-languages=c,c++ --disable-libstdcxx-pchThe following will prevent GCC from looking in the wrong
directories for headers and libraries:
cp Makefile{,.orig}
sed "/^HOST_\(GMP\|PPL\|CLOOG\)\(LIBS\|INC\)/s:-[IL]/\(lib\|include\)::" \
Makefile.orig > MakefileCompile the package:
make
Install the package:
make DESTDIR=${CLFS} installSome packages expect the C preprocessor to be installed in the
/lib directory.
To support those packages, create this symlink:
ln -sfv ../usr/bin/cpp ${CLFS}/libMany packages use the name cc to call the C
compiler. To satisfy those packages, create a symlink:
ln -sfv gcc ${CLFS}/usr/bin/cc