6

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

当我发出任何一个

ninja -C out/Debug

或者

ninja -C out/Release

我收到以下错误: 如果您愿意,我也在 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.

我试过了

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

4

1 回答 1

10

问题不在于-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

无论如何,它不是 ,/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 根据该文档进行重建

如果您无法从源代码重建这些第三方binutils,那么如果您只是复制第三方ld.gold检测到的系统,或者删除/重命名第三方并用系统的符号链接替换它,它可能会起作用。这些黑客攻击中的任何一个都有可能导致您出现一些模糊的损坏。whichbinutils

于 2014-05-20T14:21:56.660 回答