Для сборки пакета GCC теперь нужны пакеты GMP, MPFR и MPC. Поскольку эти пакеты нельзя брать из вашей хост системы, их надо собирать вместе с GCC. Распакуйте каждый пакет в директорий с исходными кодами GCC и переименуйте получившиеся в результате директории так, чтобы процедуры сборки GCC смогли ими автоматически пользоваться:
Эти переключатели отключают соответственно поддержку десятичной арифметики с плавающей точкой, потоков, а также библиотек libmudflap, libssp и libgomp. Эти возможности недоступны при сборке кросс-компилятора и они не требуются для кросс-компиляции временной библиотеки Libc.
--disable-multilib
Для архитектуры x86_64 в системе LFS конфигурация multilib не поддерживается. Этот переключатель никак не влияет на работу с архитектурой x86.
--enable-languages=c
Этот параметр гарантирует, что будет собран только компилятор C. Это единственный язык, который сейчас нужен.
--with-gmp-include=...
Этот параметр указывает GCC, где расположены заголовки GMP.
--with-gmp-lib=...
Этот параметр указывает GCC, где расположена библиотека GMP.
--without-ppl, --without-cloog
Эти переключатели предотвращают при построении GCC использование библиотек PPL и ClooG, которые могут быть в хост системе, но их не будет в среде, в которую вы переключитесь с помощь команды chroot.
Откомпилируйте GCC с помощью команды:
make
Компиляция теперь завершена. Обычно в этот момент следует запустить набор тестов, но, как уже упоминалось ранее, фреймворк для наборов тестов еще не установлен. Преимущества запуска тестов в настоящий момент минимальные, поскольку программы, созданные на этом первом прохода, скоро будут заменены.
Установите пакет:
make install
Использование параметра --disable-shared означает, что файл libgcc_eh.a не будет создан и установлен. Пакет Glibc зависит от этой библиотеки, поскольку в процессе сборки этой библиотеки используется функция -lgcc_eh. Эту зависимость можно разрешить с помощью создания символической ссылки на файл libgcc.a, поскольку в этом файле, в конце концов, будут храниться объекты, которые обычно находятся в libgcc_eh.a:
ln -vs libgcc.a `$LFS_TGT-gcc -print-libgcc-file-name | \ sed 's/libgcc/&_eh/'`
Подробности об этом пакете приведены в разделе " Описание пакета GCC".