%general-entities; ]> gcc-pass2 &gcc-version;
&gcc-url;
GCC-&gcc-version; - Pass 2 GCC tools, pass 2 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../chapter08/gcc.xml" xpointer="xpointer(/sect1/sect2[1]/para[1])"/> <segmentedlist> <segtitle>&buildtime;</segtitle> <segtitle>&diskspace;</segtitle> <seglistitem> <seg>&gcc-tmpp2-sbu;</seg> <seg>&gcc-tmpp2-du;</seg> </seglistitem> </segmentedlist> </sect2> <sect2 role="installation"> <title>Installation of GCC As in the first build of GCC, the GMP, MPFR, and MPC packages are required. Unpack the tarballs and move them into the required directory names: tar -xf ../mpfr-&mpfr-version;.tar.xz mv -v mpfr-&mpfr-version; mpfr tar -xf ../gmp-&gmp-version;.tar.xz mv -v gmp-&gmp-version; gmp tar -xf ../mpc-&mpc-version;.tar.gz mv -v mpc-&mpc-version; mpc If building on x86_64, change the default directory name for 64-bit libraries to lib: case $(uname -m) in x86_64) sed -e '/m64=/s/lib64/lib/' -i.orig gcc/config/i386/t-linux64 ;; esac Fix an issue with GCC-10.1 when building with a cross compiler: patch -Np1 -i ../&gcc-cross-patch; Create a separate build directory again: mkdir -v build cd build Create a symlink that allows libgcc to be built with posix threads support: mkdir -pv $LFS_TGT/libgcc ln -s ../../../libgcc/gthr-posix.h $LFS_TGT/libgcc/gthr-default.h Before starting to build GCC, remember to unset any environment variables that override the default optimization flags. Now prepare GCC for compilation: ../configure \ --build=$(../config.guess) \ --host=$LFS_TGT \ --prefix=/usr \ CC_FOR_TARGET=$LFS_TGT-gcc \ --with-build-sysroot=$LFS \ --enable-initfini-array \ --disable-nls \ --disable-multilib \ --disable-decimal-float \ --disable-libatomic \ --disable-libgomp \ --disable-libquadmath \ --disable-libssp \ --disable-libvtv \ --disable-libstdcxx \ --enable-languages=c,c++ The meaning of the new configure options: -with-build-sysroot=$LFS Normally, using --host ensures that a cross-compiler is used for building GCC, and that compiler knows that it has to look for headers and libraries in $LFS. But the build system of GCC uses other tools, which are not aware of this location. This switch is needed to have them find the needed files in $LFS, and not on the host. --enable-initfini-array This option is automatically enabled when building a native compiler with a native compiler on x86. But here, we build with a cross compiler, so we need to explicitely set this option. Compile the package: make Install the package: make DESTDIR=$LFS install As a finishing touch, create a utility symlink. Many programs and scripts run cc instead of gcc, which is used to keep programs generic and therefore usable on all kinds of UNIX systems where the GNU C compiler is not always installed. Running cc leaves the system administrator free to decide which C compiler to install: ln -sv gcc $LFS/usr/bin/cc <para>Details on this package are located in <xref linkend="contents-gcc" role="."/></para> </sect2> </sect1>