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

nsc*_*hoe 6 linker ld gold-linker

我正在尝试按照入门步骤构建Google的ligjingle ,并且我已经到达了"Building"部分.

当我发出任何一个

ninja -C out/Debug
Run Code Online (Sandbox Code Playgroud)

要么

ninja -C out/Release
Run Code Online (Sandbox Code Playgroud)

我收到以下错误: 如果您愿意,我也会在pastebin中发布输出

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.
Run Code Online (Sandbox Code Playgroud)

我试过了

ld.gold --help | grep "plugin"
Run Code Online (Sandbox Code Playgroud)

得到了:

--plugin PLUGIN             Load a plugin library
--plugin-opt OPTION         Pass an option to the plugin
Run Code Online (Sandbox Code Playgroud)

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

我一直在" " grep -Hr和不同的"插件"组合试图找到问题,但到目前为止我还没有找到任何东西.我想它隐藏在Makefile中的某个地方.

Mik*_*han 9

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

但是如果binutils已经配置了构建,它只接受它们中的任何一个--enable-plugins.文档.

当您运行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
Run Code Online (Sandbox Code Playgroud)

总之,它不是 /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
Run Code Online (Sandbox Code Playgroud)

你会得到:

./ld.gold: -plugin: unknown option
Run Code Online (Sandbox Code Playgroud)

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

如果您无法binutils从源代码重建这些第三方,那么如果您只是复制第三方ld.gold检测到的系统,或者删除/重命名第三方并将其替换为系统符号链接,则可能会有效.这些黑客中的任何一个都有可能造成一些不明显的破损.whichbinutils