LINUX.ORG.RU

LFS 6.8


0

1

Не могу пройти шаг 5.8 «Настройка набора инструментальных средств». Чистовая проверка завершается без сообщений. В книге написано, что это проблема. Даже заново пересобирал предыдущие пакеты - не помогло.

на этапе сборки какого пакета возникла эта проблема?

uju ★★
()

Ну хорошо, допустим, я нагуглил русский перевод LFS, нашел нужную главу, прочитал, осталось понять, что ты имеешь в виду.

Надо ли понимать так, что ты, как указано здесь:

  1. Создал файл dummy.c, состоящий из строчки «main(){}»
  2. Скомпилировал в a.out
  3. Сделал readelf -l a.out | grep ': /tools'
  4. Не нашел ни одной строки, хотя должен был найти «[Requesting program interpreter: /tools/lib/ld-linux.so.2]»

?

Попробуй тогда вместо «readelf -l» вызвать «readelf -a».

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

(proud_anon) Да-да, именно это я и имел в виду. Извините за краткость. Вот прочитать про команду readelf я как-то не додумался.

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

(proud_anon) Я еще не попробовал. Вот завершится сборка GCC, тогда и посмотрю. Видите ли, почему-то увидел такое сообщение:

i686-pc-linux-gnu-gcc: command not found

Буквально вчера такой проблемы небыло. Ну ведь можно же собрать один пакет в первый день, второй - во второй и т.д. (ну, не буквально) Главное правильно объявить все переменные, ссылки. Возможно, я опять где-то что-то упустил.

Кстати, я проверял, ld-linux.so.2 находится по адресу /tools/lib. Так что проблема с проверкой не в этом.

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

к стати говоря. я не делал сначала этот квалёный тулчейн, а просто компилил всё подрят и кидал в chroot, пока он не начал запускаться и компилировать проги. А потом, уже в chroot всё пересобрал с нуля. можно даже на отдельной машине.

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

Итак. Даже не знаю с чего начать. Дело в том, что я, кажется, просто неправильно набрал строку

readelf -l a.out | grep ': /tools'
Я не поставил пробел между : и /tools.

Извиняюсь за причиненные неудобства.

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

Второй проход

Пришла беда откуда не ждал! Выполняю действия п. 5.9. На этапе компиляции вот такие сообщения об ошибках:
make[2]: i686-pc-linux-gnu-ar: Command not found
make[2]: ***[libiberty.a] Error 127
make[2]: Leaving directory '/mnt/lfs/binutils-build/libiberty'
make[1]: *** [all-libiberty] Error 2
make[1]: Leaving directory '/mnt/lfs/binutils-build'
make: *** [all] Error 2

Я проверил - ar и ranlib находятся по адресу $LFS/tools/i686-pc-linux-gnu/bin, а также $LFS/tools/bin. Переменная PATH установлена верно.

P.S. К слову: gcc расположен по адресу $LFS/tools/bin и выполняется командой i686-pc-linux-gnu-gcc.

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

>Попробую решить проблему копированием этих файлов из /tools/bin в /tools/lib
Не советую.

>Переменная PATH установлена верно.
Проверьте еще раз, точно ли верно, точно ли по путям в PATH есть i686-pc-linux-gnu-ar и i686-pc-linux-gnu-ranlib. Если есть, попробуйте указать полные пути в переменных AR и RANLIB вместо одних только имен файлов.

Когда я собирал, то у меня, по-моему, тоже что-то тут не сработало, но я обошелся обычными ar и ranlib, без префикса архитектуры.

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

(proud_anon) Простите. Последнее сообщение написал, не прочитав Ваш коментарий. Сейчас попробую сделать то, что Вы посоветовали.

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

точно ли по путям в PATH есть i686-pc-linux-gnu-ar и i686-pc-linux-gnu-ranlib

Там такого нет. Что делать? Перечитывал книгу, но нигде не видел даже намека на ar или ranlib.

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

>но я обошелся обычными ar и ranlib, без префикса архитектуры

Если Вы не против, то я и так попробую.

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

>Там есть просто ar и ranlib
Я вот тоже пользовался просто ar'ом и ranlib'ом, и все работало. Не знаю, почему LFS настаивает на $LFS_TGT-ar и $LFS_TGT-ranlib. Только нужно убедиться, что вызываются они из /tools, а не с хоста. Может быть, при кросскомпиляции эти утилиты будут «с префиксом».

Впрочем, можно поискать нужные имена в вашей /tools при помощи find.

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

В общем дела обстоят так: компиляция завершилась без ошибок, а вот установка «обрадовала». Жаловалась на отсутствие какого=то файла (я не записал и забыл). Я решил удалить директорию binutils-build и повторить установку пакета. Теперь при конфигурации указал не ar и ranlib, а /tools/bin/ar и /tools/bin/ranlib. Но не могу даже сконфигурировать. Вот ошибки:
configure: error: in '/mnt/lfs/binutils-build': configure: error: C compiler cannot create executables See 'config.log' for more details
Я посмотрел этот файл, но не понял, что именно я должен был там найти. Что делать?

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

>Теперь при конфигурации указал не ar и ranlib, а /tools/bin/ar и /tools/bin/ranlib. Но не могу даже сконфигурировать.
Может быть, вообще не следовало задавать AR и RANLIB, если PATH правильно создан и /tools/bin там в начале. Но, по-моему, как у вас сейчас, тоже должно работать.

>Я посмотрел этот файл, но не понял, что именно я должен был там найти. Что делать?
Лучше всего искать так. Ищете прямо эту строчку: «C compiler cannot create executables». Над ней будут сообщения о том, что configure пытался сделать, возможно, также код маленькой тестовой программы, которую он пытался скомпилировать и запустить. Там и нужно искать причину ошибки.

В вашем случае у него, скорее всего, произошла какая-то ошибка при запуске компилятора. Поэтому ищите сообщение об ошибке от компилятора или о проблемах с его запуском.

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

(proud_anon) Нашел эту строчку. Вот код программы:

int
[br]
main()
{


;
return 0;
}

Ну а дальше те-же самые строчки.

Перед этим были ошибки:
/mnt/lfs/tools/bin/ ../lib/gcc/i686-pc-linux-gnu/4.5.2/ ../ ../ ../ ../i686-pc-linux--gnu/bin/as: error while loading shared librares: libz.so.1: cannot open shared object file: No such file or directory
configure:4180: $? = 1
configure:4217: result:
configure: failed program was:
/* confdefs.h */
#define PACKAGE_NAME «»
#define PACKAGE_TARNAME «»
#define PACKAGE_VERSION «»
#define PACKAGE_STRING «»
#define PACKAGE_BUGREPORT «»
#define PACKAGE_URL «»
/* end confdefs.h. */

Ну, а дальше - код программы (привден выше).

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

Я погуглил этот вопрос и пришел к выводу, что мне надо переустановить Glibc.

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

>error while loading shared librares: libz.so.1
А, у меня тоже такая ошибка когда-то возникала. Возможно, мы с вами что-то одинаковое неправильно делали. Я ее решил установкой zlib в первую сборку тулчейна вдобавок к binutils и GCC, но если вы нагуглили, как правильно сделать, то так и делайте.

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

>но если вы нагуглили, как правильно сделать, то так и делайте

Я не конкретно это нагуглил. На буржуйских форумах, в качестве решения, предлагали (другим людям) разные команды вводить. У меня эти команды не работают (мой bash их не находит). Но кроме этого, там еще и поясняли - что это за ошибка. Указывали, что это какие-то проблемы с компилятором, или языком C. В книге по LFS указано, что основная библиотека C находится в пакете Glbc. Вот я и подумал, что может быть переустановка решит проблему. Я попробовал набрать make install (я не удалял каталог glibc-build). Завершилось без ошибок, но не решило основную проблему. В общем сегодня еще раз попробую пересобрать этот пакет. Дальше воспользуюсь Вашим способом. Надеюсь, хоть что-нибудь изменится

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

Мой способ не помог.

Я ее решил установкой zlib в первую сборку тулчейна

Не могли бы Вы привести подробный план действий? А то я боюсь что-либо вводить - вдруг снова испорчу. Надоело уже эти пакеты сто раз переустанавливать.

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

>Не могли бы Вы привести подробный план действий
Уже не помню, как я точно делал. Поэтому не буду приводить. Если сами разберетесь, то сами сделаете, а если не разберетесь, то могут возникнуть лишние зависимости от хоста.

>А то я боюсь что-либо вводить - вдруг снова испорчу.
А не бойтесь.

>Надоело уже эти пакеты сто раз переустанавливать.
Ну, сделайте копию уже собранных.

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

Не могу установать zlib. Конфигурация проходит с предупреждениями, а компиляция завершается ошибкой:
as: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory

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

Сделал копию tools.

Разобраться с libz.so.1 так и не смог. Собираю zlib по книге. Изменяю /usr на /tools. В CFLAGS не прописываю -mstackrealign, т.к. процессор не Intel (пробовал оставлять, но появлялись ошибки по поводу этого ключа). В итоге, конфигурация проходит с предупреждениями, а компиляция требует libz.so.1.

Не понимаю, если этот файл можно было получить сборкой пакета zlib, то каким боком этот пакет ЗАВИСИТ от libz.so.1. Или я чего-то не понимаю? Т.е. я определенно что-то не так понимаю, вот только что?

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

>компиляция требует libz.so.1
Требует, наверное, компилятор, потому что вы его перепутали. Компилируйте компилятором С ХОСТА. Потом только перенастраивайте тулчейн, чтобы использовать компилятор из /tools.

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

Требует, наверное, компилятор


Ну да, компилятор.

Компилируйте компилятором С ХОСТА


Я не знаю как это сделать. Мне нужно написать:

CC=gcc

, или это совсем не то? Это нужно делать в директории zlib (я так думаю)?

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

Тупо копирование помогло.

К чему это приведет??? Отвечайте!

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

Нужно убедиться, что PATH поставлен так, чтобы вызывался GCC с хоста.
Я не помню, советуют ли авторы zlib компилировать ее в той же директории или в отдельной. Прочтите документацию.
Помню точно, что, хотя LFS рекомендует собирать скриптом configure, авторы zlib рекомендуют использовать скрипты cmake.
Скопировать файл тоже в принципе можно (вы вроде бы не кросскомпиляцией занимаетесь), если вы осознаете возможные последствия.

Вообще, знаете, сборка LFS - это долгий и трудный процесс (хотя если преодолеете первую часть, точнее, начало первой части, вторая будет значительно проще), а профит от него сомнительный, ну, кроме углубления знаний о работе Линукса. Но это углубление произойдет только если вы обладаете уже неплохими знаниями о том, как Линукс работает. В частности, где ищутся программы для запуска, как программы собираются, какие бывают системы сборки под Линуксом, что делает переменная CC и т.п.

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

Я так понимаю - лучше будет, если я прочитаю книги про работу с Linux/Unix. Понял.

Но LFS я все-равно хочу собрать.

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

Glibc

Не могу установить Glibc. Компиляция проходит успешно, а установка с ошибками:
/tools/lib/gcc/i686-pc-linux-gnu/4.5.2/ ../ ../ ../ ../i686-pc-linux-gnu/bin/ld: cannot find -lnss_test1
collect2: ld returned 1 exit status
Execution of gcc failed!
---------- Тут идут советы по прочтению FAQ и README ----------
You should restart this script from your build directory after you've fixed all problems!
Btw. the script doesn't work if you're installing GNU libc not as your primary library!
make[1]: *** [install] Error 1
make[1]: Leaving directory '/glibc-2.13'
make: *** [install] Error 2

Несколько раз перечитывал инструкции предыдущих пунктов. Не понимаю где искать ответ. Да и что значит «библиотека установлена не как основная»?

axeltory
() автор топика
Ответ на: Glibc от axeltory

Наверное, неправильно записана команда:

sed -i -e 's/"db1"/& \&\& $name ne "nss_test1"/' scripts/test-installation.pl
Видимо, вместо nss_test1 мне нужно уазать lnss_test1.

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

Аааааа!

Grub не ставится. Все установил без особых проблем. Вот только загрузчик не могу поставить! Проблема из неоткуда!

Помогите!

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