Linux 从头开始 (7.9) 第 6.10 章链接失败



这是我正在迈出的一步。到目前为止一切都很好,但是在用新链接器替换旧链接器并对规范文件进行更改后,我在尝试编译 dummy.c 时出现以下错误

 /tools/libexec/gcc/i686-pc-linux-gnu/5.3.0/collect2 -plugin /tools/libexec/gcc/i686-pc-linux-gnu/5.3.0/liblto_plugin.so -plugin-opt=/tools/libexec/gcc/i686-pc-linux-gnu/5.3.0/lto-wrapper -plugin-opt=-fresolution=/tmp/cciBczi2.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --eh-frame-hdr -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 /usr/lib/crt1.o /usr/lib/crti.o /tools/lib/gcc/i686-pc-linux-gnu/5.3.0/crtbegin.o -L/tools/lib/gcc/i686-pc-linux-gnu/5.3.0 -L/tools/lib/gcc/i686-pc-linux-gnu/5.3.0/../../../../i686-pc-linux-gnu/lib /tmp/ccxbWIWi.o "" -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /tools/lib/gcc/i686-pc-linux-gnu/5.3.0/crtend.o /usr/lib/crtn.o
/tools/lib/gcc/i686-pc-linux-gnu/5.3.0/../../../../i686-pc-linux-gnu/bin/ld: cannot find : No such file or directory
collect2: error: ld returned 1 exit status

经过大量的谷歌搜索,我在同一阶段看到了关于类似问题的其他帖子,但所有这些错误都涉及丢失的特定文件(通常是crt*.o文件),但这个错误是不同的,令人困惑的是,它实际上并没有列出它找不到的文件。我已经确保ld和它的各种链接存在,并在您调用它们时执行操作。我什至将目录剪切并粘贴到 cd 命令中,它确实有效(我最初被路径中的/../../../../甩掉了,但它似乎工作得很好)。collect2 缺少或找不到什么文件?

问题是为编译文件而发出的命令中存在额外的空格。

正确的命令是: cc dummy.c -v -Wl,--verbose &>dummy.log

我输入的是: cc dummy.c -v -Wl, --verbose &>dummy.log

这个非常小的差异意味着四个小时的拔头发。感谢所有提供帮助的人!

最新更新