6.7 Заголовки Linux `make mrproper` не работают в lfs 7.5

6.7 Заголовки Linux `make mrproper` не работают в lfs 7.5

Я собираю 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/libLFS, я вручную создал симлинк из 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. Я полагаю, что это проблема переменного фокуса.

Связанный контент