Command explanations patch -Np1 -i ../gcc-3.2-nofixincludes-2.patch: This prevents the fixincludes script from running. This is needed because under normal circumstances the GCC installation will run the fixincludes scripts which scans your system for header files that need to be fixed. Say it finds Glibc header files. It will fix them and will end up in $LFS/static/lib/gcc-lib/i686-pc-linux-gnu/3.2. Later on in chapter 6 you will install Glibc which will install header files in /usr/include. Next you will install other programs which will use Glibc headers. GCC will look in /static/lib/gcc-lib before looking in /usr/include, whichhas the result of Glibc header files from your host distribution being found and used which are probably incompatible with the Glibc version actually in use on the LFS system. --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. 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.