linker - 黄金链接器 ld.gold -plugin : unknown option

标签 linker ld gold-linker

我正在尝试按照 Getting started 构建 Google 的 ligjingle步骤,我已到达“建筑”部分。

当我发出任一问题时

ninja -C out/Debug

ninja -C out/Release

我收到以下错误: I posted the output in pastebin too, if you prefer

ninja -C out/Debug
ninja: Entering directory `out/Debug'
[3/2606] LINK genmacro
FAILED: cc -Wl,-z,now -Wl,-z,relro -Wl,--fatal-warnings -pthread -Wl,-z,noexecstack -fPIC -B/home/nschoe/workspace/webrtc/jingle/trunk/third_party/binutils/Linux_x64/Release/bin -Wl,--disable-new-dtags -m64 -Wl,--icf=none -fuse-ld=gold -Wl,--gdb-index -o genmacro -Wl,--start-group obj/third_party/yasm/source/patched-yasm/tools/genmacro/genmacro.genmacro.o  -Wl,--end-group 
/home/nschoe/workspace/webrtc/jingle/trunk/third_party/binutils/Linux_x64/Release/bin/ld.gold: -plugin: unknown option
/home/nschoe/workspace/webrtc/jingle/trunk/third_party/binutils/Linux_x64/Release/bin/ld.gold: use the --help option for usage information
collect2: error: ld returned 1 exit status
[3/2606] CC obj/net/third_party/nss/ssl/libssl.sslauth.o
ninja: build stopped: subcommand failed.

我试过了

ld.gold --help | grep "plugin"

得到:

--plugin PLUGIN             Load a plugin library
--plugin-opt OPTION         Pass an option to the plugin

所以我想我收到的错误是因为代码中的某个地方, ld.gold 是用 -plugin xxx 调用的。而不是--plugin xxx

我一直在和grep -Hr”以及“插件”的不同组合来尝试查找问题,但到目前为止我还没有发现任何东西。我想它隐藏在 Makefile 中的某个地方。

最佳答案

问题不在于 -plugin选项应该是 --pluginld.gold 如果接受其中任何一个选项,则接受这两个选项。

但它只接受其中任何一个如果构建binutils已经 配置为--enable-pluginsDocumentation .

当您运行ld.gold --help | grep "plugin"时输出显示--plugin是 一个公认的选择。

因此问题似乎是这样的:-

/home/nschoe/workspace/webrtc/jingle/trunk/third_party/binutils/Linux_x64/Release/bin/ld.gold 尚未配置 --enable-plugins

当您运行ld.gold --help | grep "plugin"时您正在执行第一个 ld.gold 可以在您的 PATH 上找到。大概是/usr/bin/ld.gold从你的发行版。你 可以通过运行找到:

which ld.gold

无论如何,不​​是 /home/nschoe/workspace/webrtc/jingle/trunk/third_party/binutils/Linux_x64/Release/bin/ld.gold 这是一个ld.gold 配置为 --enable-plugins

如果您cd进入/home/nschoe/workspace/webrtc/jingle/trunk/third_party/binutils/Linux_x64/Release/bin/ 并运行:

 ./ld.gold -plugin

您将得到:

./ld.gold: -plugin: unknown option

要解决该问题,理想的解决方案是重建 /home/nschoe/workspace/webrtc/jingle/trunk/third_party/binutils 根据that Documentation

如果无法重建这些第三方binutils从源头那么它会 如果你只是复制系统 ld.gold 可能会起作用由 which 检测到超过其中的一个 第三方binutils ,或删除/重命名第三方并将其替换为符号链接(symbolic link) 到系统一。这些黑客攻击中的任何一个都有可能发生 会给你带来一些不明显的损坏。

关于linker - 黄金链接器 ld.gold -plugin : unknown option,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23754665/

相关文章:

ios - 苹果在 -ObjC 链接器标志上的错误

gcc - --start-group 和 --end-group 命令行选项是什么?

linux - 如何链接到特定的 glibc 版本?

assembly - 使用汇编中的 .reloc

ios - 如何解决架构 i386 的 undefined symbol

c - gentoo ld.gold 在 sys-libs/db 上失败

linker - 使用 ld.gold 将静态库直接链接到可执行文件

c++ - 用黄金替换 ld - 有经验吗?

c++ - DLL 和编译器设置

c - Windows x64 上的 MySQL C Connector 与 GCC 链接错误