Gold linker ld.gold -plugin:未知选项

时间:2014-05-20 08:28:46

标签: linker ld gold-linker

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

当我发出

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的某个地方。

1 个答案:

答案 0 :(得分:9)

问题不在于-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 根据{{​​3}}

如果您无法从源代码重建这些第三方binutils,那么它将会 如果您只是将ld.gold检测到的系统which复制到该系统中,可能会有效 第三方binutils,或删除/重命名第三方,并用符号链接替换它 系统之一。这些黑客都有机会 会导致你一些不明显的破损。