LINUX.ORG.RU

Установка Glibc по инструкции LFS


0

0

Собственно ситауция: загружаюсь с CD Ubuntu 9.10, монтирую диск, где будет новая система. Следую инструкции LFS и запнулся на стадии установки Glibc. Configure проходит без ошибок (--prefix=/(моя папка) ). При make вываливается с ошибкой: make[1]: *** No rule to make target `/home/solov/downloads/1/Versions.all', needed by `/home/solov/downloads/1/abi-versions.h'. Stop. Все,что удалось найти в интеренет, цитата «Всё не так просто. Ты попытался сменить версию glibc в системе. Это привело к тому, что существующие приложения оказались неработоспособными, так как они требуют для запуска другой версии glibc». Верно ли это? и как обойти?

Заранее благодарен


export CFLAGS="-O2 -march=i686"

установка -march= обязательна, можете подставить то что вам нужно вместо i686

конфигурировать тоже надо с включением аддонов

--prefix=/usr \
--host=i686-pc-linux \
--build=i686-pc-linux \
--enable-add-ons=libidn,nptl \
--with-tls

Sylvia ★★★★★
()

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

это как раз из за аддонов

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

Столкнулся с новой проблемой

../glibc-2.11.1/configure --prefix=/(папка для установки) --disable-shared --enable-kernel=2.6.33 --with-headers=/temp/include --host=i686-pc-linux --build=i686-pc-linux --disable-multilib --enable-languages=c --disable-nls --disable-decimal-float --disable-threads --disable-libmudflap --disable-libssp --disable-libgomp --enable-add-ons=libidn,nptl --with-tls

Ошибка: make[2]: make[2]: *** No rule to make target /mnt/hd/system/sources/utils/glibc-build/misc/vm86.o, needed by /mnt/hd/system/sources/utils/glibc-build/misc/stamp.o. Stop.

начинаю тихо беситься

IlyamI
() автор топика
Ответ на: Столкнулся с новой проблемой от IlyamI

--prefix=/(папка для установки)

для Glibc всегда должен быть
--prefix=/usr

--enable-kernel=2.6.33


лучше указать что-то пониже, например 2.6.18 , не суть, но тем не менее


попробуйте вот что, соберите с указанными мной выше опциями
и установите куда вам требуется через опцию

make install install_root=папка для установки

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

один фиг.

сменил --prefix на /usr, 2.6.33 на 2.6.18 - результат тот же: make[2]: make[2]: *** No rule to make target /mnt/hd/system/sources/utils/glibc-build/misc/vm86.o, needed by /mnt/hd/system/sources/utils/glibc-build/misc/stamp.o. Stop

IlyamI
() автор топика
Ответ на: комментарий от IlyamI

Новая ошибка

Поиграл с параметрами CFLAGS. Два раза менял --prefix. make делаю при помощи sudo - результат один :

CPP='gcc -E -x c-header' /mnt/hd/system/tools/glibc-build/elf/ld-linux.so.2 --library-path /mnt/hd/system/tools/glibc-build:/mnt/hd/system/tools/glibc-build/math:/mnt/hd/system/tools/glibc-build/elf:/mnt/hd/system/tools/glibc-build/dlfcn:/mnt/hd/system/tools/glibc-build/nss:/mnt/hd/system/tools/glibc-build/nis:/mnt/hd/system/tools/glibc-build/rt:/mnt/hd/system/tools/glibc-build/resolv:/mnt/hd/system/tools/glibc-build/crypt:/mnt/hd/system/tools/glibc-build/nptl /mnt/hd/system/tools/glibc-build/sunrpc/rpcgen -Y ../scripts -c rpcsvc/bootparam_prot.x -o /mnt/hd/system/tools/glibc-build/sunrpc/xbootparam_prot.T execv: Permission denied /mnt/hd/system/tools/glibc-build/sunrpc/rpcgen: C preprocessor failed with exit code 1 make[2]: *** [/mnt/hd/system/tools/glibc-build/sunrpc/xbootparam_prot.stmp] Error 1 make[2]: Leaving directory /mnt/hd/system/tools/glibc-2.11.1/sunrpc make[1]: *** [sunrpc/others] Error 2 make[1]: Leaving directory /mnt/hd/system/tools/glibc-2.11.1 make: *** [all] Error 2

Файл rpcgen генерируется, в ручную менял ему права на макисально возможные, ничего не помогает

IlyamI
() автор топика
Ответ на: Новая ошибка от IlyamI

вроде нашел решение

http://www.linux.org.ru/news/opensource/151447#comment-151736

Один вопрос: make, вроде, прошел без проблем. А вот make install install_root=(куда) закончился сообщением

rm -f /mnt/hd/system/tools/glibc-build/elf/symlink.list test ! -x /mnt/hd/system/tools/glibc-build/elf/ldconfig || LC_ALL=C LANGUAGE=C \     /mnt/hd/system/tools/glibc-build/elf/ldconfig -r /temp \              /lib /usr/lib /mnt/hd/system/tools/glibc-build/elf/ldconfig: Can't open configuration file /etc/ld.so.conf: No such file or directory make[1]: Leaving directory `/mnt/hd/system/tools/glibc-2.11.1'

Это повлияет на дальнейшую работу?

IlyamI
() автор топика
Ответ на: комментарий от IlyamI

>Это повлияет на дальнейшую работу?

нет. сделайте вручную ldconfig


... решение мне показалось странным, но тем не менее при сборке glibc случаются всякие вещи, например одна из ошибок связана с тем, что нужно сделать
export GREP=/bin/grep

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

переключение на новый компоновщика

Я так понимаю, что сейчас надо переключиться на новый компоновщик путем правки spec-файла. При загрузке с компакт-диска я не нашел в системе файла с именем spec. Вопрос: где он должен находится и его формат? хотел сделать ссылку с моего /lib/ld-linux.so.2 (-> ld-2.10.1) на новый /temp/lib/ld-linux.so.2 (-> ld-2.11.1) не получается: либо пишет, что такой файл уже существует, либо после переименования моего ld-linux.so.2 или того, на кого он ссылается ни одна программа не исполяется (почему, я и сам понимаю)

IlyamI
() автор топика
Ответ на: переключение на новый компоновщика от IlyamI

>надо переключиться на новый компоновщик путем правки spec-файла

что-то вы такое тут написали страшное и непонятное...

хотел сделать ссылку


это делает ldconfig, хотя можно и вручную, если сами понимаете что и зачем делаете

с моего /lib/ld-linux.so.2 (-> ld-2.10.1) на новый /temp/lib/ld-linux.so.2 (-> ld-2.11.1)


не совсем понятное действо, чего хотите добиться? Обычно собирается базовая система (glibc, binutils, gcc) после чего можно переехать на ее корневую ФС с помощью chroot



ps: не стоит делать сильных проблем именно из за glibc, если собираете lfs на основе той же архитектуры, то glibc между собой совместимы в пределах версий и на основании использованных опций при конфигурировании

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

удаляю /lib/ld.so.cache, /temp/lib/ld.so.cache

делаю ldconfig -r /temp

echo 'main(){}' > dummy.c

/temp/bin/gcc -B/temp/lib dummy.c

readelf -l a.out

и вижу ссылку на /lib/ld-linux.so.2

Уважаемый(ая) Silvy, подскажите пожалуйста, как переключиться на новый компоновщик. Вы единственный человек, который отвечает по существу, без издевок.

IlyamI
() автор топика
Ответ на: комментарий от Sylvia

не, у меня инглиш LFS_BOOK 6.6.pdf

Сейчас буду смотреть Вашу ссылку. Вроде в голове начинает складываться целостная картина по приготовлению новой системы с нуля. просто начал изучать linux месяц назад, на работе в свободные минутки :-)

IlyamI
() автор топика
Ответ на: комментарий от IlyamI

на самом деле то же самое, только пока пункт 5.8

IlyamI
() автор топика
Ответ на: комментарий от IlyamI

целостная картина такая

вам нужно взять что-то уже работающее и с интернетом,
и приготовить на этой основе ядро системы

glibc
binutils
gcc
coreutils
bash
и другие базовые пакеты, чтобы ваша система могла работать и переключившись в нее вы могли собирать дальше.

Она может даже не загружаться, если вы еще не настроили скрипты загрузки, вы можете перейти в нее через вызов chroot



в ЛФС описана сборка через промежуточный этап, т.е. собираются промежуточные binutils, glibc, gcc , чтобы ими собрать уже финальные для вашей будущей системы glibc, binutils, coreutils, bash, gcc итп


на самом деле можно сделать отступление от промежуточного тулчейна, если платформа одна и та же, т.е. можно взять Gentoo stage3 или любой LiveCD и собрать на нем сразу glibc , binutils, coreutils итп для вашей финальной системы, установить все это в каталог, который станет новым корневым, сначала через chroot, а потом когда настроите загрузку - то нативным корневым.
Критерием к livecd являются достаточно свежее ядро, близость версий glibc и GCC, --prefix= всегда указывается как /usr цель установки можно указывать через make install DESTDIR=/path install_root=/path INSTALL_PREFIX=/path INSTALL_ROOT=/path (точно можно посмотреть в Makefile)

это если вы понимаете что делаете... если не совсем - лучше следовать свежим инструкциям с книги LFS, но опять таки попытаться понять что и для чего делается.

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

огромное спасибо, после выходных продолжу... я бы добавил вам еще одну зведу

IlyamI
() автор топика

Сам пытался под Ubuntu-клоном собрать LFS, но была проблема в какой-то части(binutils?) сборки для bootstrapping-а. В итоге решил использовать LFS LiveCD и система установилась как по маслу.

Сейчас пытаюсь осилить bootstrapping для GHC. XD

xkitenz
()
Ответ на: комментарий от Sylvia

> цель установки можно указывать через make install DESTDIR=/path

DESTDIR скорее для системы контроля пакетов. В 99% случаев используется --prefix а DESTDIR только тогда, когда после распаковки пакета у вас нет configure-скрипта(ну и autoconf-а) а есть только Makefile; ну или в выше-названном случае.

xkitenz
()
Ответ на: комментарий от xkitenz

В случае бутстраппинга --prefix= может не совпадать с DESTDIR (или аналогами) поскольку целью сборки будет являться chroot в новую систему

Sylvia ★★★★★
()

Та же самая ошибка, та же самая Ubunta, только установленная на винт. там выше по тексту были еще ошибки от mawk. сразу и предположил, что проблема в нем, но не удержался, полез в гугл. в мейл листе LFS 6.5 был вопрос, посоветовали поставить gawk. поставил, собирается, прямо копипастом из LFS 6.6, без всяких изменений. система x86_64, если кому нужна такая информация.

anonymous
()
Ответ на: комментарий от anonymous

уже и собралось, пока писал

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.