Рейтинг@Mail.ru
[Войти] [Зарегистрироваться]

Наши друзья и партнеры

UnixForum
Беспроводные выключатели nooLite

Lines Club

Ищем достойных соперников.

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

Библиотека сайта или "Мой Linux Documentation Project"

Ошибка базы данных:
На главную -> MyLDP -> Электронные книги по ОС Linux
Linux From Scratch (version 6.8)
Назад Глава 5. Создание временной версии системы Вперед

5.5. Пакет GCC-4.5.2 — Первый проход

Приблизительное время сборки: 5,0 SBU

Требуемое дисковое пространство: 809 MB

5.5.1. Кросс установка пакета GCC

Для сборки пакета GCC теперь нужны пакеты GMP, MPFR и MPC. Поскольку эти пакеты нельзя брать из вашей хост системы, их надо собирать вместе с GCC. Распакуйте каждый пакет в директорий с исходными кодами GCC и переименуйте получившиеся в результате директории так, чтобы процедуры сборки GCC смогли ими автоматически пользоваться:

tar -jxf ../mpfr-3.0.0.tar.bz2
mv -v mpfr-3.0.0 mpfr
tar -jxf ../gmp-5.0.1.tar.bz2
mv -v gmp-5.0.1 gmp
tar -zxf ../mpc-0.8.2.tar.gz
mv -v mpc-0.8.2 mpc

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

mkdir -v ../gcc-build
cd ../gcc-build

Подготавливаем пакет GCC для компиляции:

../gcc-4.5.2/configure \
    --target=$LFS_TGT --prefix=/tools \
    --disable-nls --disable-shared --disable-multilib \
    --disable-decimal-float --disable-threads \
    --disable-libmudflap --disable-libssp \
    --disable-libgomp --enable-languages=c \
    --with-gmp-include=$(pwd)/gmp --with-gmp-lib=$(pwd)/gmp/.libs \
    --without-ppl --without-cloog

Пояснение конфигурационных параметров:

--disable-shared
 

Этот параметр указывает GCC компоновать свои внутренние библиотеки статически. Мы делаем это с тем, чтобы избежать возможных проблем с хост системой.

--disable-decimal-float, --disable-threads, --disable-libmudflap, --disable-libssp, --disable-libgomp
 

Эти переключатели отключают соответственно поддержку десятичной арифметики с плавающей точкой, потоков, а также библиотек libmudflap, libssp и libgomp. Эти возможности недоступны при сборке кросс-компилятора и они не требуются для кросс-компиляции временной библиотеки Libc.

--disable-multilib
 

Для архитектуры x86_64 в системе LFS конфигурация multilib не поддерживается. Этот переключатель никак не влияет на работу с архитектурой x86.

--enable-languages=c
 

Этот параметр гарантирует, что будет собран только компилятор C. Это единственный язык, который сейчас нужен.

--with-gmp-include=...
 

Этот параметр указывает GCC, где расположены заголовки GMP.

--with-gmp-lib=...
 

Этот параметр указывает GCC, где расположена библиотека GMP.

--without-ppl, --without-cloog
 

Эти переключатели предотвращают при построении GCC использование библиотек PPL и ClooG, которые могут быть в хост системе, но их не будет в среде, в которую вы переключитесь с помощь команды chroot.

Откомпилируйте GCC с помощью команды:

make

Компиляция теперь завершена. Обычно в этот момент следует запустить набор тестов, но, как уже упоминалось ранее, фреймворк для наборов тестов еще не установлен. Преимущества запуска тестов в настоящий момент минимальные, поскольку программы, созданные на этом первом прохода, скоро будут заменены.

Установите пакет:

make install

Использование параметра --disable-shared означает, что файл libgcc_eh.a не будет создан и установлен. Пакет Glibc зависит от этой библиотеки, поскольку в процессе сборки этой библиотеки используется функция -lgcc_eh. Эту зависимость можно разрешить с помощью создания символической ссылки на файл libgcc.a, поскольку в этом файле, в конце концов, будут храниться объекты, которые обычно находятся в libgcc_eh.a:

ln -vs libgcc.a `$LFS_TGT-gcc -print-libgcc-file-name | \
    sed 's/libgcc/&_eh/'`

Подробности об этом пакете приведены в разделе " Описание пакета GCC".


Предыдущий раздел: Оглавление Следующий раздел:
Пакет Binutils-2.21 - Первый проход   Заголовки Linux-2.6.37 API


Средняя оценка 4 при 2 голосовавших
Вы сможете оценить статью и оставить комментарий, если войдете или зарегистрируетесь.
Только зарегистрированные пользователи могут оценивать и комментировать статьи.

Комментарии

Алексей Важнов пишет: 05.06.2011
Хорошо бы добавить в начале: tar -xjf gcc-4.5.2.tar.bz2 cd gcc-4.5.2

Анон Анонимов пишет: 29.11.2012
Согласен с Mc Sim, некоторая путаница возникает. Стоит явно указать куда и какие архивы распаковывать. Нет, догадаться не особо трудно, но когда сидишь за монитором больше десяти часов - становится как-то напряжно соображать вообще :)

Alexey Al пишет: 07.12.2012
Подготовка пакета проходит а вот make не завершается успешно... кто может помоч checking for gmp.h... no configure: error: gmp.h can't be found, or is unusable. make[1]: *** [configure-mpfr] Error 1 make[1]: Leaving directory `/mnt/lfs/sources/gcc-build' make: *** [all] Error 2

Alex Saz пишет: 10.12.2012
проблема, аналогичная описанной Alexey Al. пакет не хочет собираться. последние строки при компиляции: ../../gcc-4.7.0/mpc/src/tan.c:252: undefined reference to `mpfr_nextbelow` collect2: ld returned 1 exit status make[3]: *** [cc1] Error 1 make[3]: Leaving directory `/tmp/gcc/build_gcc/gcc' make[2]: *** [all-stage1-gcc] Error 2 make[2]: Leaving directory `/tmp/gcc/build_gcc' make[1]: *** [stage1-bubble] Error 2 make[1]: Leaving directory `/tmp/gcc/build_gcc' make: *** [all] Error 2