در این پست میخوایم Gcc رو کامپایل کنیم نیازمندی های Gcc MPFR و GMP و MPC ولی ما نمیخوایم بسته های مورد نیاز رو نصب کنیم پس بسته هار رو در پوشه ای که Gcc اکسترات شده اکسترات میکنیم.
tar -xvf gcc-4.9.1.tar.bz2
cd gcc-4.9.1
tar -xf ../mpfr-3.1.2.tar.xz
mv -v mpfr-3.1.2 mpfr
tar -xf ../gmp-6.0.0a.tar.xz
mv -v gmp-6.0.0 gmp
tar -xf ../mpc-1.0.2.tar.gz
mv -v mpc-1.0.2 mpc
و بعد دستور های زیر را وارد میکنیم
for file in \
$(find gcc/config -name linux64.h -o -name linux.h -o -name sysv4.h)
do
cp -uv $file{,.orig}
sed -e 's@/lib\(64\)\?\(32\)\?/ld@/tools&@g' \
-e 's@/usr@/tools@g' $file.orig > $file
echo '
#undef STANDARD_STARTFILE_PREFIX_1
#undef STANDARD_STARTFILE_PREFIX_2
#define STANDARD_STARTFILE_PREFIX_1 "/tools/lib/"
#define STANDARD_STARTFILE_PREFIX_2 ""' >> $file
touch $file.orig
done
sed -i '/k prot/agcc_cv_libc_provides_ssp=yes' gcc/configure
sed -i 's/if \((code.*))\)/if (\1 \&\& \!DEBUG_INSN_P (insn))/' gcc/sched-deps.c
gcc باید در یک پوشه جدا از سورس کد کامپایل بشه به همین دلیل یک پوشه جدید میسازیم.
mkdir -v ../gcc-build
cd ../gcc-build
و در دستور زیر رو وارد میکنیم تا Makefile ساخته بشه
../gcc-4.9.1/configure \
--target=$LFS_TGT \
--prefix=/tools \
--with-sysroot=$LFS \
--with-newlib \
--without-headers \
--with-local-prefix=/tools \
--with-native-system-header-dir=/tools/include \
--disable-nls \
--disable-shared \
--disable-multilib \
--disable-decimal-float \
--disable-threads \
--disable-libatomic \
--disable-libgomp \
--disable-libitm \
--disable-libquadmath \
--disable-libsanitizer \
--disable-libssp \
--disable-libvtv \
--disable-libcilkrts \
--disable-libstdc++-v3 \
--enable-languages=c,c++
و در آخر بسته رو کامپایل و نصب میکنیم
make
make install