Библиотека сайта 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 |