Пакет GCC содержит коллекцию компиляторов GNU, включая компиляторы C и C++.
Расчетное время сборки 11.7 SBU
Требуемое место на диске 294 MB
GCC зависит от установки: Bash, Binutils, Coreutils, Diffutils, Findutils, Gawk, Gettext, Glibc, Grep, Make, Perl, Sed и Texinfo.
Этот пакет известен своим нестабильным поведением при компиляции с измененными опциями оптимизации (включая опции -march и -mcpu). GCC рекомендуется компилировать с настройками по умолчанию. Если Вы задали переменные, такие как CFLAGS и CXXFLAGS, рекомендуется убрать их при сборке пакета GCC.
Сейчас мы собираемся установить компиляторы языков C и C++, таким образом Вам надо распаковать архивы GCC-core и GCC-g++: они распакуются в один и тот же каталог. Вы можете также распаковать пакет GCC-testsuite. Полный пакет GCC содержит намного больше компиляторов. Инструкции по их установке вы можете найти на http://www.linuxfromscratch.org/blfs/view/svn/general/gcc.html.
Примените только No-Fixincludes патч (не Specs патч), также использованный в предыдущей части:
patch -Np1 -i ../gcc-3.4.1-no_fixincludes-1.patch
GCC выпадает с ошибкой при компиляции некоторых пакетов, не входящих в базовую систему Linux From Scratch (такие как Mozilla и kdegraphics), когда применяется совместно с неправильной версией Binutils. Применим следующий патч для коррекции этой проблемы:
patch -Np1 -i ../gcc-3.4.1-linkonce-1.patch
Применим sed-замещение, которое запретит инсталляцию libiberty.a. Версия libiberty.a будет использоваться от Binutils:
sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in
В документации по GCC рекомендуется собирать GCC вне каталога с исходниками в отдельном каталоге для сборки:
mkdir ../gcc-build cd ../gcc-build
Подготавливаем GCC для компиляции:
../gcc-3.4.1/configure --prefix=/usr --libexecdir=/usr/lib --enable-shared \ --enable-threads=posix --enable-__cxa_atexit \ --enable-clocale=gnu --enable-languages=c,c++
Компилируем пакет:
make
В этой части тестирование GCC является обязательным. Не пропускайте его.
Тестируем результат, но не останавливаемся при возникновении ошибок:
make -k check
Некоторые из известных ошибок были описаны в предыдущей части. Тест из раздела 5.13. “GCC-3.4.1. Шаг 2” все еще актуален здесь. Можете повторить его при необходимости.
Устанавливаем пакет:
make install
Некоторые пакеты рассчитывают, что препроцессор C будет установлен в /lib. Для поддержки этих пакетов создадим ссылку:
ln -s ../usr/bin/cpp /lib
Многие пакеты используют имя cc для вызова компилятора С. Для поддержки таких пакетов создадим ссылку:
ln -s gcc /usr/bin/cc
В этом месте рекомендуется повторить тест из части 6.12. “Переустановка средств”. Если тест не прошел, то, скорее всего, Вы применили патч GCC Specs из главы 5.
Проинсталлированные программы: c++, cc (link to gcc), cpp, g++, gcc, gccbug и gcov.
Проинсталлированные библиотеки: libgcc.a, libgcc_eh.a, libgcc_s.so, libstdc++.[a,so] и libsupc++.a.
C-компилятор.
C-препроцессор, используется компилятором для извлечения #include, #define и похожих определений в исходных файлах.
C++ компилятор.
C++ компилятор.
C-компилятор.
Скрипт, применяемый для облегчения создания сообщений об ошибках.
Содержит в себе несколько тестов, используется для анализа программ и определения, где оптимизация будет иметь наибольший эффект.
Описывает run-time поддержку для gcc .
Стандартная C++ библиотека.
Предоставляет поддержку шаблонов для языка програмирования C++.