collect2:致命错误:找不到“ld”编译终止

collect2:致命错误:找不到“ld”编译终止

当我尝试运行 C 和 C++ 程序时,我得到了

collect2: fatal error: cannot find 'ld' compilation terminated.

我已经安装了 GCC 和 G++ 最新版本。

答案1

就我而言,我通过以下解决方法解决了这个问题:

在交叉编译器 bin 目录中,我创建了一个指向编译器的符号链接

ld (ld -> powerpc-fsl-linux-ld). 

然后在 makefile 或构建脚本中,我将工具链文件夹添加到 PATH 变量中

export PATH=$PATH:"toolchain-dir-absolute-path"

有效!

答案2

我们的团队在通过以下方式构建 RHEL6 DTS2 时遇到了同样的错误澳式足球联盟。我们使用 GNU 链接器而不是金接头CMake 似乎默认这么做。

在您的编译器命令行中,留意-Wl,-fuse-ld=gold并摆脱它!

在我们的 CMake 构建系统中,这通过使用附加选项调用构建脚本来实现-DCOL_WITHOUT_GOLD

答案3

您可以通过 安装黄金链接器apt-get install binutils-gold

对我来说,这仍然会出错,因为 binutils-gold 会安装 /usr/bin/ld.gold,并且通过 strace 发现 gcc 似乎想要一个以完整主机三元组命名的二进制文件,例如 x86_64-nptl-linux-gnu-ld.gold。我必须对其进行符号链接ln -s /usr/bin/ld.gold /usr/bin/x86_64-nptl-linux-gnu-ld.gold,然后一切就都正常了。

答案4

无论出于什么原因,我的/usr/bin/ld.bfd权限都不允许所有用户读取或执行。 chmod a+rx /usr/bin/ld.bfd解决了我的问题

相关内容