我尝试使用以下命令创建一个 Linux 发行版Linux 从头开始(LFS)网站。一切都很顺利,直到步骤5.7. Glibc-2.19,但是当我尝试时:
$LFS_TGT-gcc dummy.c
我得到:
/tools/lib/gcc/i686-lfs-linux-gnu/4.8.2/../../../../i686-lfs-linux-gnu/bin/ld: cannot find crt1.o: No such file or directory
/tools/lib/gcc/i686-lfs-linux-gnu/4.8.2/../../../../i686-lfs-linux-gnu/bin/ld: cannot find crti.o: No such file or directory
所以我用谷歌搜索了一段时间,我意识到 Debian 更改了一些目录,我搜索了这些文件,并在以下位置找到了它们:
/usr/libx32/
我从这些搜索中意识到,尝试在 32 位结构中编译 64 位会发生这种情况,我应该在以下位置创建主题的虚拟链接:
/tools/lib/gcc/i686-lfs-linux-gnu/4.8.2/
但当我这样做时,我得到了:
/tools/lib/gcc/i686-lfs-linux-gnu/4.8.2/crt1.o: file not recognized: File format not recognized
这一步我真的不知道下一步该做什么。我该如何修复它?
答案1
正确的虚拟链接是:
ln -s /tools/lib/crt*.o /tools/lib/gcc/i686-lfs-linux-gnu/4.8.2/
答案2
你的环境变量$LFS
可能是错误的。
我也尝试构建 LFS 并得到了类似的错误:
/mnt/tools/bin/../lib/gcc/x86_64-lfs-linux-gnu/9.2.0/../../../../x86_64-lfs-linux-gnu/bin/ld: cannot find crt1.o: No such file or directory
/mnt/tools/bin/../lib/gcc/x86_64-lfs-linux-gnu/9.2.0/../../../../x86_64-lfs-linux-gnu/bin/ld: cannot find crti.o: No such file or directory
我已经尝试过其他评论建议的解决方案来直接链接丢失的文件。虽然它实际上使它通过了简单的编译测试,但我坚持下一步构建 libstdc++。配置最终出现以下错误:
checking for stdalign.h... no
checking for the value of EOF... configure: error: computing EOF failed
毕竟,我发现我不小心将 LFS 变量更改为错误的路径(我使用的安装路径与指南不同,并且我忘记.bashrc
相应地更改 LFS 导出)。这才是真正的原因。
答案3
应该注意的是,下面的命令也解决了 Fedora 28 上的相同问题。
ln -s /tools/lib/crt*.o /tools/lib/gcc/i686-lfs-linux-gnu/4.8.2/