Command explanations patch -Np1 -i ../gcc-&gcc-version;.patch: This patch fixes a bug in gcc's linker concerning non-exported (weak) symbols, which was brought to the surface by the new glibc and also one or two other problems which can arise. --prefix=/usr: This is NOT a typo. GCC hard codes some paths while compiling and so we need to pass /usr as the prefix during ./configure. We pass the real install prefix during the make install command later. --enable-languages=c,c++: This only builds the C and C++ compilers and not the other available compilers as they are, on the average, not often used. If those other compilers are needed, the --enable-languages parameter can be omitted. ln -s ../usr/bin/cpp: This creates the $LFS/lib/cpp symlink. Some packages explicitly try to find cpp in /lib. ln -s ../bin/cpp: This creates the $LFS/usr/lib/cpp symlink as there are packages that expect cpp to be in /usr/lib.