
Я собираю lfs-7.5.
Когда я бегу make mrproper
в главе6.7, там говорится:
make: gcc: команда не найдена
и при запуске bash /tools/bin/gcc
он говорит:
bash: /tools/bin/gcc: такого файла или каталога нет
Это та же проблема, что издесь. Даже информация, предоставленная человеком, задавшим вопрос в комментариях, совпадает с моей.
Он говорит, что он сделал "третий проход" из gcc
вглава 5. Если бы это было так, то автор LFS ясно указал бы нам на необходимость выполнения 3 проходов. Я предполагаю, что я где-то делаю тонкую ошибку, но не могу понять, где именно.
Согласно поддержке, оказанной авторами LFS, они просят нас переделать все с самого начала. Я согласен с ними, но, не зная, где могла произойти ошибка, мы обязательно снова совершим ту же ошибку (как это сделал я). Вывод, предоставленный человеком, который задал вопрос в вопросе поддержки LFS, совпадает с моим. Этосвязь.
Еще один вопрос по той же темездесьне дали никаких ответов.
Пожалуйста помоги.
Кстати, когда я узнал, что это gcc
не было связано с библиотеками в /tools/lib
LFS, я вручную создал симлинк из libc.so.6
и /lib
под /lib64
тем /mnt/lfs
местом, где я смонтировал раздел LFS. Но когда я выполнял make headers_check
в6.7(после make mrproper
), он пожаловался, что не нашел, libz.so
и когда я поискал в /tools/lib
, я не смог его найти.
решение1
Я не знаю, является ли предыдущий ответ, который я отправил,правильныйили нет.
Я решил продолжить делать LFS-7.5
в Linux Mint
, где пользователь lfs
присутствовал в sudoers
файле. После завершенияГлава 5, я снова получил ошибку вГлава 6.7 make mrproper
. Итак, я удалил все папки, $LFS
кроме $LFS/sources
и начал с самого начала.
После завершения 2-го прохода gcc
я проверил, указывают ли библиотеки gcc
на те, что ниже, $LFS/tools
или нет. Но я обнаружил, что они все еще указывают на /usr
хост-систему.
Итак, я перестроил все с первого прохода gcc
, и все стало хорошо.
Итак, после второго прохода gcc
выполните:
лдд
$LFS/tools/bin/$LFS_TGT-gcc
и если полученный результат указывает на /usr
, повторить с 1-го прохода gcc
.
По крайней мере, я использовал этот метод, и сразу после повторного выполнения первого прохода во gcc
второй раз вывод вышеуказанной команды указывал на $LFS/tools/lib
.
решение2
Мне удалось успешно выполнить make mrproper
следующие команды. Я не знаю, является ли это действительно решением вышеуказанной проблемы. В любом случае, вот оно:
Я использовал Ubuntu 14.04 и создалЛФСuser как это было предложено в книге LFS-7.5. Но проблема была в том, что я не осознавал это до тех пор, пока позже, гораздо позже, когда chroot
я вошел в раздел LFS, что lfs user не был вsudoersфайл.
Ubuntu не добавляла (не добавляет?) пользователя автоматически вsudoersфайл, вероятно, задуман разработчиками Ubuntu. Это может быть причиной, я не пробовал его снова на Ubuntu.
Я расстроился и начал пробовать LFS-7.5 вЛинукс Минт 16и он автоматически добавил пользователя вsudoersфайл и все прошло отличноГлава 6.7при строительстве и монтажезаголовки linux.
решение3
У меня была точно такая же проблема. Я проверил динамический компоновщик, используемый gcc: readelf -l /tools/bin/gcc | grep interpreter
и он не был/tools/lib64/ld-linux-x86-64.so.2но/lib64/ld-linux-x86-64.so.2. Итак, gcc не удалось запустить, поскольку этот файл не существовал.
Проблема возникла на этапе сборки gcc Pass2. Я не поместил определение CC, CXX, AR и RANLIB на ту же строку, что и команда configure.
Я побежал
CC=$LFS_TGT-gcc
CXX=$LFS_TGT-g++
AR=$LFS_TGT-ar
RANLIB=$LFS_TGT-ranlib
../configure --prefix=/tools ...
Вместо
CC=$LFS_TGT-gcc \
CXX=$LFS_TGT-g++ \
AR=$LFS_TGT-ar \
RANLIB=$LFS_TGT-ranlib \
../configure --prefix=/tools ...
Та же проблема может возникнуть в шаге сборки binutils pass2. Я полагаю, что это проблема переменного фокуса.