Библиотека сайта rus-linux.net
| 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
Рекомендуемые
|
ЗамечаниеЕсли вы планируете компилировать поддержку для языка Ада, вам необходимо временно установить пакет GNAT с тем, чтобы разрешить циклическую зависимость, которая возникает при перекомпиляции GCC для добавления языка Ада. На странице загрузки AdaCore выберите вашу платформу и 2010 год, а затем выберите файл для загрузки. У вас есть возможность сделать выбор между файлом x86-linux или x86_64-linux. |
Информация о пакете GNAT GPL 2010
- Загрузка (HTTP): https://libre.adacore.com/libre/download/
Замечания для пользователей: 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 | это инструмент, используемый для создания файлов |
grepjar | поиск файлов |
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 |



