RussianLDP Рейтинг@Mail.ru
WebMoney: 
WMZ Z294115950220 
WMR R409981405661 
WME E134003968233 
YandexMoney: 
41001198119846 
E-gold:
5128052

Beyond Linux From Scratch. Версия 6.0

Глава 12. Программирование

GCC-3.4.1

Введение в GCC

Пакет GCC содержит GNU-компиляторы. Они полезны для компилирования программ, написанных на C, C++, Fortran , Java, Objective C и Ada.

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

Дополнительно

Зависимости GCC

Рекомендованные

Установка GCC

Если Вы планируете компилировать Ada, то необходимо будет временно установить GNAT для удовлетворения зависимости при перекомпиляции GCC для включения Ada.

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

Зависимости GNAT

Требуемые

Tcsh-6.13.00.

Установка GNAT

Установим GNAT запуском следующей команды:


./doconfig

Этот скрипт спросит о том, как и куда Вы хотели бы установить GNAT. Для исключения конфликтов с системным gcc пакет будет установлен в отдельный каталог, который позднее может быть удален из системы.

В ответ на вопросы, заданные скриптом doconfig, введите 3 в ответ на первый вопрос и /opt/gnat в ответ на второй вопрос.

Для окончания установки запустите следующую команду под пользователем root:


./doinstall

Компилятор GNAT может быть вызван выполнением бинарника gcc, установленного приведенным выше скриптом.

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


PATH_HOLD=$PATH &&
export PATH=/opt/gnat/bin:$PATH

Возврат к установке GCC

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

[Important]

Важно

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

Не выполняйте команду make install пока не убедитесь в успешности сборки. Вы можете сравнить результаты тестов с результатами, находящимися на http://gcc.gnu.org/ml/gcc-testresults/. Представленные результаты тестов на платформе i686 для системы LFS-6.0 находятся на http://linuxfromscratch.org/~randy/gcc341_test.txt . Вы также можете захотеть обратиться к информации, находящейся в разделе GCC-Шаг 2 главы 5 в книге LFS.

[Замечание]

Замечание

Некоторые из Java программ, установленные в пакете GCC , конфликтуют (имеют те же имена) с программами из пакета J2SDK-1.4.2. Если Вы устанавливаете язык Java из пакета GCC, но хотите использовать по умолчанию программы из J2SDK, убедитесь что $JAVA_HOME/bin указан перед /usr/bin в переменной PATH.


patch -Np1 -i ../gcc-3.4.1-no_fixincludes-1.patch &&
patch -Np1 -i ../gcc-3.4.1-linkonce-1.patch &&
sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in &&
mkdir ../gcc-build &&
cd ../gcc-build &&
../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++,objc,f77,ada,java &&
make bootstrap &&
make -C gcc gnatlib-shared &&
make -C gcc gnattools &&
make -k check &&
../gcc-3.4.1/contrib/test_summary

А теперь, как пользователь root:


make install &&
ln -v -sf ../usr/bin/cpp /lib &&
ln -v -sf gcc /usr/bin/cc &&
ln -v -sf g77 /usr/bin/f77 &&
chown -v -R root:root /usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include &&
chown -v -R root:root /usr/lib/gcc/i686-pc-linux-gnu/3.4.1/ada{lib,include}

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


rm -rf /opt/gnat &&
export PATH=$PATH_HOLD

Описание команд

sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in: Эта команда запрещает установку libiberty.a, поскольку будет использоваться версия, представленная в Binutils .

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

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

--enable-clocale=gnu: Эта команда служит для безопасности работы с неполными данными локалей.

--enable-languages=c,c++,objc,f77,ada,java : Эта команда определяет собираемые языки программирования. Вы можете исключить из нее ненужные языки.

make -C gcc gnatlib-shared: Эта команда собирает разделяемые и статические библиотеки Ada. Пропустите этот шаг, если не используете Ada в качестве одного из языков.

make -C gcc gnattools: Эта команда собирает средства разработки и бинарники Ada. Пропустите этот шаг, если не используете Ada в качестве одного из языков.

make -k check: Эта команда запускает тест в режиме без остановки в случае обнаружения ошибок.

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

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

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

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

Содержание

Установленные программы: addr2name.awk, cc, c++, cpp, f77, g++, g77, gcc, gccbug, gcj, gcjh, gcov, gij, gnat, gnatbind, gnatbl, gnatchop, gnatclean, gnatfind, gnatkr, gnatlink, gnatls, gnatmake, gnatname, gnatprep, gnatxref, gpr2make, gprcmd, grepjar, jar, jcf-dump, jv-convert, jv-scan, rmic, rmiregistry и архитектурно-зависимые имена для for c++, g++, gcc{,-3.4.1}, gcj и gcjh. Установленные библиотеки: lib-org-w3c-dom.[so,a], lib-org-xml-sax.[so,a], libffi-2.00-beta.so, libffi.[so,a], libfrtbegin.a, libg2c.[so,a], libgcc_s.so, libgcj.[so,a], libobjc.[so,a], libstdc++.[so.6,a], libsupc++.a и большое количество библиотек и исполняемых файлов в /usr/lib/gcc. Установленные каталоги /usr/include/c++, /usr/include/gcj, /usr/include/gnu, /usr/include/java, /usr/include/javax, /usr/lib/gcc, /usr/lib/security, /usr/share/gnat и /usr/share/java.

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

addr2name.awk

Эмулирует некоторую функциональность addr2line.

f77

Ссылка на g77, созданная в целях совместимости.

g77

Компилятор Fortran, вызываемый из gcc.

gcj

Первоначальный компилятор для языка Java .

gcjh

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

gij

Интерпретатор GNU для кода Java.

gnat

Компилятор Ada, вызываемый из gcc.

gnatbind

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

gnatbl

Компоновщик Ada.

gnatchop

Полезен для переименования файлов для соответствия стандартам соглашений именования файлов Ada.

gnatclean

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

gnatfind

Поисковик описаний/использования GNAT.

gnatlink

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

gnatls

Скомпилированный браузер элементов.

gnatmake

Автоматический make.

gnatname

Перечисляет файлы, ассоциированные с проектом GNAT.

gnatprep

Внешний предпроцессор GNAT.

gnatxref

GNAT создатель перекрестных ссылок.

gpr2make

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

gprcmd

Утилита, используемая Makefile.generic для поддержки многоязыковых сборок. Она предоставляет набор команд, благодаря которым файлам Makefile не надо зависеть от Unix-утилит, которые не везде доступны.

grepjar

Ищет jar файлы по образцу.

jar

Средство для работы с Java-архивами.

jcf-dump

Печатает информацию о файлах Java-классов.

jv-convert

Преобразует файлы из одной кодировки в другую.

jv-scan

Печатает информацию об исходных файлах Java .

rmic

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

rmiregistry

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

Последнее обновление 2005-02-28 13:39:06 -0700.

Поиск

 

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