5.5. GCC-3.4.1 - Шаг 1

Пакет GCC содержит коллекцию компилятора GNU, включая компиляторы C и C++.

Расчетное время сборки 4.4 SBU

Требуемое место на диске 300 MB

GCC - зависимости установки: Bash, Binutils, Coreutils, Diffutils, Findutils, Gawk, Gettext, Glibc, Grep, Make, Perl, Sed и Texinfo

5.5.1. Инсталируем GCC

Распакуйте только тарбол GCC-core, нам пока не нужен компилятор C++.

Этот пакет известен своим нестабильным поведением при компиляции с измененными опциями оптимизации (включая опции -march и -mcpu). GCC рекомендуется компилировать с настройками по умолчанию. Если вы задали переменные такие как CFLAGS и CXXFLAGS, рекомендуется убрать их при сборке пакета GCC.

В документации по GCC рекомендуется собирать GCC вне директории с исходниками в отдельной директории для сборки:

mkdir ../gcc-build cd ../gcc-build

Подготавливаем GCC для компиляции:

../gcc-3.4.1/configure --prefix=/tools \ --libexecdir=/tools/lib --with-local-prefix=/tools \ --disable-nls --enable-shared --enable-languages=c

Описание опций конфигурации:

--with-local-prefix=/tools

Назначение этого переключателя - исключить /usr/local/include из пути поиска включений gcc. Это не очень существенно, но мы собираемся минимизировать зависимомть от основной системы, и мы считаем, что это нужно сделать.

--enable-shared

Этот переключатель может показаться интуитивно понятным поначалу. Но его использование допускает сборку libgcc_s.so.1 и libgcc_eh.a, а также делает libgcc_eh.a доступным для скрипта конфигурации Glibc (следующего компилируемого пакета), выдавая правильный результат. Заметьте, что бинарники компонуются статически, если это задано значением -static для переменной BOOT_LDFLAGS далее.

--enable-languages=c

Эта опция позволяет быть увереным, что будет собран только компилятор C. Она нужна только в том случае, если вы скачали и распаковали полный тарбол.

Продолжим компиляцию пакета:

make BOOT_LDFLAGS="-static" bootstrap

Описание параметров сборки:

BOOT_LDFLAGS="-static"

Это скажет GCC компоновать программы статически.

bootstrap

Этот параметр заставляет не просто компилироваться GCC, а компилироваться несколько раз. Программы, скомпилированые сначала используются для компиляции программ еще раз, а те, в свою очередь, используются при компиляции в третий раз. Идентичность второй и третьей компиляции позволяет убедиться в корректности сборки.

Компиляция проведена. На этом этапе обычно выполняется тест, но как было сказано ранее, мы еще не имеем полного набора тестовых утилит на своем месте. Кроме того, смысл запуска теста на этом этапе минимален т.к. программы, собранные на этом шаге скоро будут заменены.

Устанавливаем пакет

make install

Многие программы и скрипты используют cc вместо gcc для обеспечения переносимости программ на все Unix системы. Не у всех установлен именно компилятор GNU C. Запуск cc позволяет администратору выбирать, какой компилятор C устанавливать в систему, и мы создаем ссылку на него:

ln -s gcc /tools/bin/cc

Детальная информация о пакете находится в Разделе 6.14.2, “Contents of GCC”.