Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

На главную -> MyLDP -> Электронные книги по ОС Linux
Beyond Linux From Scratch. Version 2011-12-307
Назад 12. Программирование Вперед

Пакет GCC-4.5.1

Знакомимся с пакетом GCC

В пакете GCC находятся компиляторы GNU. Этот пакет используется для компиляции программ, написанных на C, C++, Fortran, Java, Objective C, Objective C++ и Ada. Перед тем, как устанавливать один из этих дополнительных компиляторов, вы должны убедиться, что вам на самом деле нужен один из них (C и C++ установлены в LFS). Кроме того, в книге BLFS есть инструкции по установки пакета IcedTea6-1.9.7 или JDK-6 Update 18, который можно использовать вместо языка Java из пакета GCC. Многие считают, что Oracle JDK является более надежной средой Java, чем та, которая предоставляется пакетом GCC.

Предосторожности

Если вы обновляете пакет GCC от версии, более ранней, чем 4.5.1, вы должны быть очень аккуратны при компилировании модулей ядра, предоставляемых сторонними разработчиками. Вы должны убедиться, что ядро и все модули ядра также скомпилированы с использованием той же самой версии GCC, которую вы используете для модулей сторонних разработчиков. Эта проблема никак не влияет на обновления самого ядра (и модулей ядра), а инструкции, приведенные ниже, относятся к полной переустановке GCC. Если у вас уже есть модули сторонних пользователей, обеспечьте, чтобы они были перекомпилированы с использованием обновленной версии GCC. Как всегда, никогда не обновляйте те заголовки ядра, с которыми в LFS был откомпилирован пакет Glibc.

Известно, что пакет правильно собирается и работает на платформе LFS-6.5.

Информация о пакете

  • Загрузка (HTTP): http://ftp.gnu.org/gnu/gcc/gcc-4.5.1/gcc-4.5.1.tar.bz2
  • Загрузка (FTP): ftp://ftp.gnu.org/gnu/gcc/gcc-4.5.1/gcc-4.5.1.tar.bz2
  • Контрольная сумма MD5: 48231a8e33ed6e058a341c53b819de1a
  • Размер загружаемого пакета: 66 MB
  • Оценочный размер требуемого дискового пространства: ~3,5 GB (сборка, тестирование и установка всех компиляторов)
  • Оценочное время сборки: 126 SBU (сборка, тестирование и установка всех компиляторов)

Зависимости пакета GCC

Рекомендуемые

DejaGnu-1.5

Замечание

Если вы планируете компилировать поддержку для языка Ада, вам необходимо временно установить пакет GNAT с тем, чтобы разрешить циклическую зависимость, которая возникает при перекомпиляции GCC для добавления языка Ада. На странице загрузки AdaCore выберите вашу платформу и 2010 год, а затем выберите файл для загрузки. У вас есть возможность сделать выбор между файлом x86-linux или x86_64-linux.

Информация о пакете GNAT GPL 2010

Замечания для пользователей: http://wiki.linuxfromscratch.org/blfs/wiki/gcc

Установка пакета GNAT

Прежде, чем распаковывать и вносить изменения в директорий сборки GCC, сначала распакуйте архив GNAT в только что созданный директорий и установите GNAT, выполнив следующую команду:

make ins-all prefix=<Ваш директорий для сборки>/gnat

К компилятору GNAT можно обратиться, выполнив двоичный файл gcc, установленный в директории <Ваш директорий сборки>/gnat/bin.

Теперь вы можете удалить исходный код пакета GNAT:

cd .. &&
rm -rf gnat-2010-i686-gnu-linux-libc2.3-bin

Подготовьтесь к компиляции GCC, заменив версию GNAT компилятора gcc в начале переменной PATH при помощи следующих команд:

PATH_HOLD=$PATH &&
export PATH=<Ваш директорий для сборки>/gnat/bin:$PATH_HOLD

Установка пакета GCC

Установите пакет GCC с помощью следующих команд:

Важно

Процесс установки может перезаписать существующие у вас компиляторы GCC gcc и c++ и библиотеки. Настоятельно рекомендуется, чтобы у вас перед началом сборки были установлены пакеты Tcl, Expect и DejaGnu с тем, чтобы вы могли запустить полный набор тестов.

Не переходите к команде make install до тех пор, пока вы не будете уверены, что сборка прошла успешно. Вы можете сравнить свои результаты тестов с тем, которые можно найти на http://gcc.gnu.org/ml/gcc-testresults/. Там также по ссылке http://anduin.linuxfromscratch.org/files/BLFS/svn/gcc451_test.txt есть результат тестирования 32-битовой платформы для архитектуры i686 с системой LFS-SVN20101029. Вы также можете обратиться к информации, которая есть разделе GCC главы 6 в книге LFS (../../../../lfs/view/development/chapter06/gcc.html, перевод см. здесь).

В инструкциях, приведенных ниже, намеренно выполняется команда "make bootstrap", вместо простой команды "make". Хотя предполагается, что в системе LFS уже установлена текущая версия GCC, требуется выполнять операцию самораскрутки bootstrap, поскольку в данной инсталляции в качестве устанавливаемого компилятора указывается компилятор языка Ada. Для того, чтобы собрать пакет для языка Ada, на стадии stage1 самораскрутки следует использовать компилятор GNAT. Если не использовать "самораскрутку", то, в конце концов, вы получите gcc, собранный на стороннем компиляторе.

sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in &&
sed -i 's@\./fixinc\.sh@-c true@'        gcc/Makefile.in       &&
sed -i 's/Standard/Types/'               gcc/ada/uintp.adb     &&

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

../gcc-4.5.1/configure \
    --prefix=/usr \
    --libexecdir=/usr/lib \
    --with-system-zlib \
    --enable-shared \
    --enable-threads=posix \
    --enable-__cxa_atexit \
    --disable-multilib \
    --enable-bootstrap \
    --enable-clocale=gnu \
    --enable-languages=c,c++,ada,fortran,java,objc,obj-c++ &&

make bootstrap &&
make -k check  &&

../gcc-4.5.1/contrib/test_summary

Теперь в роли пользователя root выполните:

make install &&

ln -v -sf ../usr/bin/cpp /lib &&
ln -v -sf gcc /usr/bin/cc &&

chown -v -R root:root \
    /usr/lib/gcc/i686-pc-linux-gnu/4.5.1/include \
    /usr/lib/gcc/i686-pc-linux-gnu/4.5.1/ada{lib,include}

Заголовок интерфейса libffi устанавливается там, где его не смогут найти другие пакеты. Если у вас в качестве одного из устанавливаемых языков указан язык Java, создайте в /usr/include символическую ссылку с тем, чтобы это исправить:

ln -v -sf `find /usr/lib/gcc -name ffitarget.h` /usr/include

Теперь вы должны перейти в роль непривилегированного пользователя и удалить установку GNAT и выполнить следующие операции очистки:

rm -rf <Ваш директорий для сборки>/gnat
export PATH=$PATH_HOLD &&
unset PATH_HOLD

Пояснение команд

Две команды sed являются точно такими же, что использовались во время сборки в системе LFS. Третья команда исправляет проблему, связанную со сборкой ADA.

mkdir ../gcc-build; cd ../gcc-build: В документации GCC рекомендуется собирать пакет в отдельном директории, предназначенном для сборки.

--enable-shared --enable-threads=posix --enable-__cxa_atexit: Эти параметры необходимы для сборки библиотек C++ в соответствие с опубликованными стандартами.

--disable-multilib: Этот параметр обеспечивает, что будут создаваться файлы, предназначенные конкретно для архитектуры вашего компьютера.

--enable-bootstrap: Этот параметр используется, чтобы выполнить установку в режиме самораскрутки bootstrap.

--enable-clocale=gnu: Этот параметр помогает в случае, если недостаточно данных о локали.

--enable-languages=c,c++,ada,fortran,java,objc,obj-c++: В этой команде определяется, какие языки будут собираться. Вы можете изменить эту команду с тем, чтобы удалить ненужные языки.

make -k check: С помощью этой команды будет запущен тестовый набор данных, которые не будет останавливаться в случае, если встретятся ошибки.

../gcc-4.5.1/contrib/test_summary: С помощью этой команды будет создан итоговый документ с результатами выполнения тестов. Вы можете добавить к команде | grep -A7 Summ для получения еще более сокращенного варианта итогового документа. Вы также можете перенаправить выдаваемый результат в файл для последующего анализа и сравнения.

ln -v -sf ../usr/bin/cpp /lib: Эта команда создает ссылку на препроцессор C, поскольку в некоторых пакетах предполагается, что он будет установлен в директорий /lib.

ln -v -sf gcc /usr/bin/cc: Эта ссылка создается потому, что некоторые пакеты обращаются к компилятору C с использованием альтернативного имени.

chown -v -R root:root /usr/lib/gcc/i686-pc-linux-gnu/...: Если пакет собран пользователем, не имеющего прав доступа root, права доступа, установленные для директориев include и adalib (и внутри них) будут некорректными. Указанные команды изменяют права доступа и владельцем пользователя и группу root. Не указывайте команду, необходимую для изменения директориев Ada, если вы не включили язык Ada в качестве одного из устанавливаемых языков.

Описание пакета

Установленные программы: addr2name.awk, fastjar, gcj, gcj-dbtool,gcjh, gfortran, gij, gjnih, gnat, gnatbind, gnatbl, gnatchop, gnatclean, gnatfind, gnatkr, gnatlink, gnatls, gnatmake, gnatname, gnatprep, gnatxref, gprmake, grepjar, grmic, grmiregistry, gtreelang, jcf-dump, jv-convert, jv-scan and architecture specific names for gcj и gcjh

Установленные библиотеки: libffi.{so,a}, libgcj.{so,a}, libgfortran.{so,a}, libgfortranbegin.a, libgij.{so,a}, libobjc.{so,a} и большое количество других библиотек времени исполнения и исполняемых модулей, находящихся в /usr/lib/gcc

Установленные директории: /usr/include/c++/4.5.1/{gcj,gnu,java,javax,org}, /usr/lib/gcc/i686-pc-linux-gnu/4.5.1/ada{include,lib}, /usr/lib/gcj-4.5.1, /usr/lib/security, и /usr/share/java

Имена и описания некоторых программ и библиотек здесь не приводятся, но их можно найти в ../../../../lfs/view/development/chapter06/gcc.html#contents-gcc, поскольку они первоначально устанавливались при сборке платформы LFS.

Краткое описание

addr2name.awk

эмулирует некоторые функции addr2line

fastjar

архив инструментальных средств для работы с архивами Java

gcj

является компилятором языка Java с возможность заглядывать вперед

gcj-dbtool

является инструментом для создания и манипулирования с файлами классов, используемых при отображении баз данных

gcjh

генерирует заголовочные файлы из файлов классов Java

gfortran

компилятор языка Fortran, который вызывается с помощью gcc

gij

интерпретатор GNU обрабатывающий байткод Java

gjnij

используется для генерации заголовочных файлов JNI из файлов классов. Запуск эквивалентен запуску команды gcjh -jni

gnat

компилятор языка Ada, который вызывается с помощью gcc

gnatbind

используется для сборки откомпилированных объектов

gnatbl

компоновщик языка Ada

gnatchop

используется для переименования файлов в соответствие с соглашением об именовании, применяемом в языке Ada по умолчанию

gnatclean

используется для удаления файлов, связанных с проектом GNAT

gnatfind

является инструментальным средством finder, предназначенным для определений или использования элементов проекта GNAT

gnatkr

используется для именования проблемного файла, когда проблема в файле связана с превышением указанной максимальной длины файла

gnatlink

используется для компоновки программ и сборки исполняемого файла

gnatls

браузер откомпилированных компонентов

gnatmake

автоматическое средство make

gnatname

выдает список файлов, связанных с проектом GNAT

gnatprep

является внешним препроцессором GNAT

gnatxref

работает с кросс-ссылками в GNAT

gprmake

это инструмент, используемый для создания файлов Makefile, которые поддерживают выполнение компиляции на нескольких языках

grepjar

поиск файлов jar по образцу

grmic

генерирует заглушки для удаленного вызова методов

grmiregistry

запускает регистрацию удаленного объекта на текущем хосте

gtreelang

существенно сокращенная версия C, предназначенная для демонстрации особенностей процесса генерации кода GCC. Реализованы только те функции, которые непосредственно поддерживаются в процессе генерации кода. Функции реализованы самым простым и наиболее понятным образом. Реализованы не все базовые функции — большая часть функций не реализована. Предполагается, что базовые функции будут постепенно по мере их реализации до тех пор, пока в Treelang не будет реализовано большинство основных функций GCC

jcf-dump

выдает информацию о файлах с классами Java

jv-convert

конвертирует файлы из одной системы кодировки в другую

jv-scan

выдает информацию о файлах с исходными кодами Java

Перевод сделан с варианта оригинала, датированного 2011-01-03 23:47:42 +0000


Предыдущий раздел: Оглавление Следующий раздел:
Пакет GC-7.1   Пакет Guile-2.0.3