LINUX.ORG.RU

Сборка LFS 6.8


0

2

В общем так. Решил собрать собственный дистрибутив, чтобы получше разобраться с Linux (нашел в интернете такую возможность). Материалы, которыми я пользуюсь располагаются по адресу:

http://rus-linux.net/nlib.php?name=/MyLDP/BOOKS/LFS-BOOK-6.8-ru/lfs-6.8-ru-in...

Проблема вот в чем: возникает ошибка в процессе конфигурации (т.е. до выполнения команды make). Там появляются какие-то error-ы (ERROR 2, ERROR 1). Написано, что не может быть сконфигурировано (простите, что не подробно; нужно будет - пвторю сборку и покажу вывод).

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

Теперь, как я это понимаю: распаковать архивы, переименовать, переместить переименованные директории в директорию gcc-4.5.2 (куда распаковался соответствующий архив).

Вобщем, на вас одна надежда. Заранее благодарю.

Так там же всё написано:

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
Cancellor ★★★★☆
()

Если ты просто бездумно копируешь команды в консоль, то лучше бросай это дело.

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

>(Cancellor)Так там же всё написано:

Этот пункт я понял (все без ошибок делаю). Ошибки появляются в процессе выполнения команды, расположенной после пункта «Подготавливаем пакет GCC для компиляции», т.е. во время конфигурирования.

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

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

>(Yareg)Если ты просто бездумно копируешь команды в консоль, то лучше бросай это дело.

Делаю всю работу настолько осмысленно насколько это возможно: читаю описание каждого шага, изучаю используемые команды.

Просто видел записи на форумах - у людей же получается.

Честно говоря, я не совсем вас понял. Я, вроде бы, думаю над каждым шагом. Я знаю, что configure - это запуск конфигурации, make - запуск файла Makefile (в котором есть записи для взова компиллятора с нужными параметрами), а make install - запуск файла install. Может быть я и не могу сходу написать Makefile для сложного проекта, но я и не переписываю команды в консоль в надежде на чудо!

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

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

Точно ли совпадает версия GMP, MPFR и MPC с той, которая в книге? Если новее версия, может быть несовместимость.

Также обратите внимание, что на сайте LFS недавно появился патч к MPC 0.9, который исправляет какие-то проблемы с конфигурацией в главе 5: http://www.linuxfromscratch.org/patches/downloads/mpc/mpc-0.9-fix_configure_errors-1.patch. Может быть, как раз ваш случай.

Да, и сообщения о том, что «make завершилось с ошибкой 1» (или 2) малоинформативны, нужно все же посмотреть предыдущие строки, какая там именно ошибка.

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

>(proud_anon)Точно ли совпадает версия GMP, MPFR и MPC с той, которая в книге?

Все пакеты были закачаны по ссылкам из книги. Версии совпадают (я проверял).

Также обратите внимание, что на сайте LFS недавно появился патч к MPC 0.9

Спасибо.

Да, и сообщения о том, что «make завершилось с ошибкой 1» (или 2) малоинформативны, нужно все же посмотреть предыдущие строки, какая там именно ошибка.

Результат приведу завтра.

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

>Все пакеты были закачаны по ссылкам из книги. Версии совпадают (я проверял).

Ну, тогда патч к 0.9 вам, наверное, не нужен, потому что в книге 0.8.2.

proud_anon ★★★★★
()

> Там появляются какие-то error-ы

оставь это

нужно будет - пвторю сборку и покажу вывод


нет, зачем, мы сами отгадаем

true_admin ★★★★★
()

Исходники той версии, что в книге? Если что, где-то можно было скачать tar со всеми исходниками и патчами сразу.

Никаких ошибок с путями быть не может.

А пробелов в них нет? Бывают кривые скрипты, не знаю, насколько это к gcc относится.

// Надо бы пообновлять свой 6.7.

gentoo_root ★★★★★
()

Добавление

Во-первых: ошибки возникают при выполнении команды make.
Во-вторых: покажу только сообщения с ошибками, т.к. во время выполнения этой команды очень много информации выводится.
---------- Я перенаправил вывод в файл, так что если нужно будет - я смогу показать результат. ----------

Итак, результат:

configure: WARNING: fixed-point is not supported for this target
Links are now set up to build a cross-compiler from i686-pc-linux-gnu to i686-lfs-linux-gnu.
make[1]: *** [configure-gmp] Errof 1
make: *** [all] Error 2

axeltory
() автор топика
Ответ на: Добавление от axeltory

Разберись уже как работает make. Он всего лишь запускает команды, которые прописаны в Makefile, и, если они завершаются с ненулевым кодом возврата, пишет «Error» и останавливает выполнение. Поэтому те последние две строчки, что ты привёл, не несут никакой информации, кроме того, что есть какие-то проблемы, о чём ты уже писал. Приводи что написано выше.

Судя по [1], у тебя работает многопоточная компиляция. При разборках лучше использовать однопоточную, потому что тогда не надо листать лог сборки в поисках сообщений об ошибках. Запускай make -j1. Предварительно ещё можно сделать make -k.

anonymous
()
Ответ на: Добавление от axeltory

>Links are now set up to build a cross-compiler from i686-pc-linux-gnu to i686-lfs-linux-gnu.

В том месте, где надо было указывать целевую платформу, ты что-то сделал неправильно. Зачем-то ты написал «i686-lfs-linux-gnu» вместо «i686-pc-linux-gnu». Он не знает, что за платформа «i686-lfs-linux-gnu», поэтому собраться не может.

Возможные места: флаги --build, --target или --host у скрипта configure, либо переменная среды CHOST.

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

(proud_anon) Ваше замечание по поводу флага было верным:
было записано: --target=i686-lfs-linux-gnu

(anonymous) После запуска скрипта configure запустил make с параметром k, как Вы и рекомендовали. Не хотелось бы надоедать, но не помогло.

Вот строчки с ошибками и предупреждениями:
configure: WARNING: fixed-point is not supported for this target
Links are now set up to build a native compiler for i686-pc-linux-gnu.
configure: WARNING: using cross tools not prefixed with host triplet
configure: error: source directory already configured: run «make distclean» there first
make[2]: *** [configure-stage1-gmp] Error 1
make[2]: Target 'all-stage1' not remade because of errors.
make[2]: Leaving directory '/mnt/lfs/gcc-build'
make[1]: *** [stage1-bubble] Error 2
make[1]: Target 'stage3-bubble' not remade because of errors.
make[1]: Leaving directory '/mnt/lfs/gcc-build'
make: *** [all] Error 2

---------- Интересно, что за 'stage1-bubble' и 'stage3-bubble'. И почему в списке нет 'stage2-bubble'? ----------
Весь остальной вывод перенаправлен в файл. Там ни одного сообщения об ошибке.

P.S. В книге написано «Распакуйте каждый пакет в директорий с исходными кодами GCC...». Я каждую папку копирую в директорий «gcc-4.5.2», т.е. туда, куда распаковался архив с GCC. Все, что было в этих папках после распаковки пакетов GMP, MPFR и MPC там и осталось. Так правильно, или нет?

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

>run «make distclean» there first
Сделайте именно это. А еще лучше, как рекомендуют в книге, удалите директорию с исходниками и распакуйте их заново.

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

(proud_anon) «make distclean» я уже делал. Затем снова запусил configure. Затем make. Не могу объяснить причину появления этого сообщения.

Сейчас еще раз удалю директорию с исходниками и повторю все операции.

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

А с MPC, MPFR и GMP я все правильно делаю: распаковать, переименовать, переместить в папку с GCC? Ничего из этих папок доставать не нужно?

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

> распаковать, переименовать, переместить в папку с GCC?

ЕМНИП, их надо собрать и поставить отдельно, а потом уже GCC.

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

(anonymous) Простите за возможно идиотский вопрос, но что за флаг такой j1? Я посмотрел информацию по make в интернете,но так и не нашел ничего. Набрал make -j1 - мне «порекомендовали» посмотреть --help. Если это опечатка, напишите, пожалуйста, правильный вариант.

P.S. Это не шутка, не издевка и не прикол!

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

>Да, должно быть так. Не работает?

Процесс еще не завершился. Впервые за все время он длится так долго. Что-то определенно изменилось.

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

Процесс завершился через полтора часа! Я набирал make -k. Вот сообщения:
make[2]: Leaving directory '/mnt/lfs/gcc-build/fixincludes'
make[1]: Цель 'all-target' не требует выполнения команд.
make[1]: Leaving directory '/mnt/lfs/gcc-build'

Теперь набираю make install.

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

Всем ОГРОМНОЕ спасибо за помощь. Я понимаю, что потраченное на меня время уже не вернуть и за это вам бесконечно благодарен!

Надеюсь, что если у меня в будущем еще возникнут вопросы по поводу LFS я смогу обратиться к вам за помощью.

P.S. Цветовое сочетание фона и шрифта, а так же стиль шрифта, по-моему, получились ОЧЕНЬ удачно подобранными. Читать очень приятно. За это СПАСИБО дизайнерам сайта (или форума, не знаю).

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

> что за флаг такой j1?

http://www.gnu.org/software/make/manual/html_node/index.html, опция -j. Там же рядом и про -k написано, она и не должна была устранить ошибки, идея быа в том, что после -k make будет сразу ругаться, не дособирая то, что собирается. Если твой make не знает про -j, то это какой-то неправильный make, в LFS ты далеко с ним не уедешь. Впрочем, он будет заменён в процессе установки.

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

(anonymous) За ссылочку отдельное спасибо. Я смотрел русскоязычные варианты - там про ключ j ничего небыло написано...

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

Пакет Glibc

Не знаю, что делать. При компилляции этого пакета появляются ошибки и предупреждения.

Вот список ошибок и преддупреждений:
*** errlist.c count 133 inflated to GLIBC_2.12 count 134 (old errno.h?)
warning: cast to pointer from integer of different size
warning: dereferencing type-punned pointer will break strict-aliasing rules
warning: comparison between 'enum clnt_stat' and 'enum nis_error'
warning: comparison between 'nis-error' and 'enum clnt_stat'
warning: ignoring old commands for target '/mnt/lfs/glibc-build/login/pt_chown'
/mnt/lfs/tools/bin/ ../lib/gcc/i686-pc-linux-gnu/4.5.2/ ../ ../ ../ ../i686-pc-linux-gnu/bin/ld: cannot find -lgcc_eh

Все предупреждения относились к разным файлам.

Вот предупреждение Makefile:
Makefile:72: warning: overriding commands for target '/mnt/lfs/glibc-build/login/pt_chown'

Итог:
collect2: ld returned 1 exit status
make[2]: *** [/mnt/lfs/glibc-build/elf/sln] Error 1
/mnt/lfs/tools/bin/ ../lib/gcc/i686-pc-linux-gnu/4.5.2/ ../ ../ ../ ../i686-pc-linux-gnu/bin/ld: cannot find -lgcc_eh
collect2: ld returned 1 exit status
make[2]: *** [/mnt/lfs/glibc-build/elf/sln] Error 1
make[2]: Target 'others' not remade because of errors.
make[1]: *** [elf/others] Error 2
make[1]: Target 'all' not remade because of errors.
make: *** [all] Error 2

---------- Никакой опечатки нет. Сообщения, которые повторяются, повторяются и в выводе ----------

Выяснил, что если сообщение make начинается с ***, то это значит, что ошибка фатальная, т.е. ее игнорировать нельзя.

Искал решение проблемы с помощью Google - не помогло. Разве, что вот у человека была похожая (или нет, не знаю) проблема: http://forum.ubuntu.ru/index.php?topic=155137.0;prev_next=prev#new.

Еще раз прошу вас о помощи.

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

>cannot find -lgcc_eh

Погрепай LFS-книгу по libgcc_eh, там надо было симлинк сделать, скорее всего ты его не сделал или сделал неправильно.

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

>там надо было симлинк сделать, скорее всего ты его не сделал...

Вы были правы: я не сделал ссылку. Команда make -k завершилась без ошибок.

Спасибо за помощь.

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

Настройка набора инструментальных средств

После успешной сборки пакета Glibc я отключил компьютер. Позже (точнее сегодня днем) я решил продолжить сборку LFS. Я повторил все процедуры по правильному входу в систему LFS (я имею в виду монтирование раздела, изменение прав доступа, создание группы и т.д.). Но теперь возникла проблема с выполнением инструкций пункта «Настройка набора инструментальных средств»: после ввода строки

SPECS=`dirname $($LFS_TGT-gcc -print-libgcc-file-name)`/specs
появляется сообщение:
dirname: missing operand
Я посмотрел в интернете (и на английских сайтах) описание команды dirname. Насколько я понял - команда должна возвращать какой-то суффикс из имени файла. Но вот ничего (даже упоминания вскользь) про /spec не увидел.

Переменная LFS_TGT определена верно (проверил). Но на запрос

$LFS_TGT-gcc -print-libgcc-file-name
выдает
i686-pc-linux-gnu-gcc: command not found
Попробовал поискать информацию в интернете - безрезультатно.

P.S. Я точно не знаю, но может быть LFS нужно собирать «на одном дыхании» (т.е. без перезагрузок).

Эти команды я вводил и в директории $LFS, и в $LFS/tools/bin, и в ~, и в glibc-build. Не помогло.

Где я, снова, лопухнулся?

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

Настройка набора инструментальных средств

После успешной сборки пакета Glibc я отключил компьютер. Позже (точнее сегодня днем) я решил продолжить сборку LFS. Я повторил все процедуры по правильному входу в систему LFS (я имею в виду монтирование раздела, изменение прав доступа, создание группы и т.д.). Но теперь возникла проблема с выполнением инструкций пункта «Настройка набора инструментальных средств»: после ввода строки

SPECS=`dirname $($LFS_TGT-gcc -print-libgcc-file-name)`/specs
появляется сообщение:
dirname: missing operand
Я посмотрел в интернете (и на английских сайтах) описание команды dirname. Насколько я понял - команда должна возвращать какой-то суффикс из имени файла. Но вот ничего (даже упоминания вскользь) про /spec не увидел.

Переменная LFS_TGT определена верно (проверил). Но на запрос

$LFS_TGT-gcc -print-libgcc-file-name
выдает
i686-pc-linux-gnu-gcc: command not found
Попробовал поискать информацию в интернете - безрезультатно.

P.S. Я точно не знаю, но может быть LFS нужно собирать «на одном дыхании» (т.е. без перезагрузок).

Эти команды я вводил и в директории $LFS, и в $LFS/tools/bin, и в ~, и в $LFS/glibc-build. Не помогло.

Не могли бы вы мне еще раз помочь?

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

Предыдущий мой комментарий не актуален!

Короче, я еще раз попробовал набрать команды, и на этот раз никаких ошибок небыло. Тогда я выполнил чистовую проверку (как рекомендовано в книге). К сожалению, после записи последней команды, небыло вообще ничего выдано. :(

Несколько раз набирал все эти команды. Даже пересобрал пакет Glibc. Но безрезультано.

Не подскажете, в чем проблема.

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

отрадно что кто-то ещё проходит этот квест.

не сдавайся, юный красноглазик.

я предпочитал читать README и документацию которая идёт с пакетами. там как правило всё точнее написано. в lfs заглядывал только в совсем неясных сиуациях, как например установка docbook

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

>...в lfs заглядывал только в совсем неясных сиуациях...

Я Вами восхищаюсь! Но мне до этого уровня еще далеко. Я с помощью книги нормально ничего собрать не могу. Спасибо за поддержку.

Эту тему я закрываю. Открыл новую: [url="http://www.linux.org.ru/forum/development/6454035?lastmod=1309698548447«]LFS 6.8[/url]

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