Ожидаемое время сборки: 4.4 SBU
|
Пакет GCC pсодержит коллекцию компилятора GNU, включая компиляторы C и C++.
Устанавливаемые программы: c++, cc (link to gcc), cc1, cc1plus, collect2, cpp, g++, gcc, gccbug и gcov
Устанавливаемые библиотеки: libgcc.a, libgcc_eh.a, libgcc_s.so, libstdc++.[a,so] и libsupc++.a
GCC зависит от: Bash, Binutils, Coreutils, Diffutils, Findutils, Gawk, Gettext, Glibc, Grep, Make, Perl, Sed, Texinfo.
Распакуйте только тарбол GCC-core, нам пока не нужен компилятор C++.
Замечание: Несмотря на то, что GCC является очень важным пакетом средств, мы не запускаем сейчас тестирование. Во-первых, тестирование сейчас не нужно, а во-вторых, программы из этого шага будут переписаны на следующем.
Этот пакет известен своим нестабильным поведением при компиляции с измененными опциями оптимизации (включая опции -march и -mcpu). GCC рекомендуется компилировать с настройками по умолчанию. Следовательно, если вы задали переменные такие как CFLAGS или CXXFLAGS, изменяющие уровень оптимизации по умолчанию, рекомендуется убрать их при сборке пакета GCC. Изменяя оптимизации для GCC, вы действуете на свой страх и риск.
В документации по GCC рекомендуется собирать GCC вне директории с исходниками в отдельной директории для сборки:
mkdir ../gcc-build
|
Подготовим GCC к компиляции:
../gcc-3.3.1/configure --prefix=/tools \
|
Описание опций конфигурации:
--with-local-prefix=/tools: Назначение этого переключателя исключить /usr/local/include из пути поиска включений gcc. Ето не очень существенно, но мы собираемся минимизировать зависимомть от основной системы, и мы считаем, что это нужно сделать.
--enable-shared: Этот переключатель может показаться интуитивно понятным поначалу. Но его использование допускает сборку libgcc_s.so.1 и libgcc_eh.a, а также делает libgcc_eh.a доступным для скрипта конфигурации Glibc (следующего компилируемого пакета), выдавая правильный результат. Заметьте, что бинарники gcc компонуются статически, если это задано значением -static для BOOT_LDFLAGS далее.
--enable-languages=c: Эта опция позволяет буть увереным, что будет собран только компилятор C. "Она нужна только в том слущае, если вы скачали и распаковали полный тарбол.
Продолжим компиляцию пакета:
make BOOT_LDFLAGS="-static" bootstrap
|
Описание параметров сборки:
BOOT_LDFLAGS="-static": Это скажет GCC компоновать эти программы статически.
bootstrap: Этот параметр заставляет не просто компилироваться GCC, а компилироваться несколько раз. Программы, скомпилированые сначала используются для компиляции программ еще раз, а те, в свою очередь, используются при компиляции в третий раз. Идентичность второй и третьей компиляции позволяет убедиться в корректности сборки.
И установим пакет:
make install
|
Под конец мы создадим ссылку /tools/bin/cc. Многие программы и скрипты используют cc вместо gcc для обеспечения переносимости программ на все Unix системы. Не у всех установлен именно компилятор GNU C. Запуск cc позволяет администратору выбирать, какой компилятор C устанавливать в систему, и мы создаем ссылку на него:
ln -sf gcc /tools/bin/cc
|