如何为LFS提供crt1.o和crti.o?

如何为LFS提供crt1.o和crti.o?

我尝试使用以下命令创建一个 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/

相关内容