RussianLDP Рейтинг@Mail.ru
WebMoney: 
WMZ Z294115950220 
WMR R409981405661 
WME E134003968233 
Visa 
4274 3200 2453 6495 

Linux From Scratch. Версия 6.0

Глава 6. Установка основных системных программ

6.14. GCC-3.4.1

Пакет 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
[Important]

Важно

В этой части тестирование 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
[Note]

Замечание

В этом месте рекомендуется повторить тест из части 6.12. “Переустановка средств”. Если тест не прошел, то, скорее всего, Вы применили патч GCC Specs из главы 5.

6.14.2. Описание GCC

Проинсталлированные программы: 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++.

Поиск

 

Найди своих коллег!