我正在构建 lfs-7.5。
当我跑进make mrproper
章节时6.7, 它说:
make: gcc: 未找到命令
在运行时bash /tools/bin/gcc
,它说:
bash: /tools/bin/gcc: 没有这样的文件或目录
这与以下问题相同这里。甚至评论中提出问题的人提供的信息也与我的相同。
他说他做到了“第三遍” 的gcc
在第5章。如果是这种情况,那么 LFS 的作者就会明确指示我们执行 3 次传递。我猜我在某个地方犯了一个微妙的错误,但我似乎无法找出哪里。
根据LFS作者提供的支持,他们要求我们从头开始重做整个事情。我同意他们的观点,但如果不知道错误可能发生在哪里,我们必然会再次犯同样的错误(就像我所做的那样)。在 LFS 支持问题中提出问题的人提供的输出与我的一致。这是关联。
关于同一主题的另一个问题这里没有给出任何答案。
请帮忙。
顺便说一句,当我发现它gcc
没有链接到 LFS 中的库时,我手动在安装 LFS 分区的位置及其下/tools/lib
创建了一个 simlink 。但是当我执行时libc.so.6
/lib
/lib64
/mnt/lfs
make headers_check
6.7(之后make mrproper
),它抱怨没有找到libz.so
,当我在 中搜索时/tools/lib
,我找不到它。
答案1
不知道我之前提交的答案是否是正确的或不。
我决定继续执行LFS-7.5
in Linux Mint
,其中用户lfs
存在于sudoers
文件中。完成后第5章,我再次遇到错误第6.7章 make mrproper
。所以,我删除了$LFS
except下的所有文件夹$LFS/sources
并从头开始。
完成第二遍后gcc
,我检查了 的库是否gcc
指向下面的库$LFS/tools
。但我发现它们仍然指向/usr
主机系统。
所以,我从第一遍开始重新构建gcc
,然后一切都很好。
因此,在第二遍之后gcc
,执行以下操作:
LDD
$LFS/tools/bin/$LFS_TGT-gcc
如果结果输出指向/usr
,则从 的第一遍重做gcc
。
至少,这是我使用的方法,并且在gcc
第二次重做第一遍之后,上述命令的输出立即指向$LFS/tools/lib
.
答案2
我能够成功执行make mrproper
以下命令。我真的不知道这是否真的是上述问题的解决方案。无论如何,这里是:
我使用的是 Ubuntu 14.04,我创建了自由度用户按照 LFS-7.5 书的建议。但问题是,直到后来,很久以后,当chroot
进入 LFS 分区时,我才意识到 lfs 用户并不在苏多尔斯文件。
Ubuntu 没有(没有?)自动将用户添加到苏多尔斯文件,可能是 Ubuntu 人设计的。可能是这个原因,我没有在Ubuntu上再次尝试。
我心灰意冷,开始尝试 LFS-7.5Linux 薄荷 16它会自动将用户添加到苏多尔斯文件,一切顺利第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 构建步骤中。我认为这是一个可变焦距的问题。