Пакет GCC содержит коллекцию компилятора GNU, включая компиляторы C и C++.
Расчетное время сборки 11.7 SBU
Требуемое место на диске 294 MB
GCC - зависимости установки: Bash, Binutils, Coreutils,
Diffutils, Findutils, Gawk, Gettext, Glibc, Grep, Make, Perl,
Sed и Texinfo
6.14.1. Инсталируем GCC
Этот пакет известен своим нестабильным поведением при компиляции
с измененными опциями оптимизации
(включая опции -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
Проинсталированные программы: c++, cc (link to gcc), cpp, g++, gcc,
gccbug и gcov
Проинсталированные библиотеки: libgcc.a, libgcc_eh.a, libgcc_s.so,
libstdc++.[a,so] и libsupc++.a
Короткое описание
-
cc
-
C компилятор
-
cpp
-
C препроцессор; используется компилятором для извлечения
#include, #define и похожих определений в исходных файлах
-
c++
-
C++ компилятор
-
g++
-
C++ компилятор
-
gcc
-
C компилятор
-
gccbug
-
Скрипт, применяемый для облегчения создания сообщений об ошибках
-
gcov
-
Содержит в себе несколько тестов; используется для анализа программ и
определения, где оптимизация будет иметь наибольший эффект
-
libgcc
-
Описывает run-time поддержку для gcc
-
libstdc++
-
Стандартная C++ библиотека
-
libsupc++
-
Предоставляет поддержку шаблонов для языка програмирования C++