【问题标题】:Gold linker ld.gold -plugin : unknown option黄金链接器 ld.gold -plugin:未知选项
【发布时间】:2014-07-08 09:53:19
【问题描述】:

我正在尝试按照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 的某个地方。

【问题讨论】:

  • 如果你想注释多行,缩进4个空格。如果您想注释一行,请在它们的两边各放一个反引号。
  • 好的,会的。对不起。
  • 不用道歉,我只是无法想象你在这里所做的代码格式化是容易/愉快的哈哈

标签: linker ld gold-linker


【解决方案1】:

问题不在于-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,那么它将 如果您只是将which 检测到的系统ld.gold 复制到 第三方binutils,或删除/重命名第三方并用符号链接替换 到系统一。这些黑客攻击中的任何一个都有外部机会 会导致你一些模糊的破损。

【讨论】:

  • 哇,非常感谢您的解释。你完全正确:Linux_x64/Release/bin 版本没有插件支持(这很奇怪,因为这是谷歌自己下载(并构建?)的代码,他们用它来链接文件...... ) 无论如何,我正在按照文档尝试重建带有插件支持的 binutils,如果失败,我将尝试为我的 /usr/bin/ld.gold 创建一个符号链接。无论如何,再次感谢,我会再次在这里发帖告诉我是否成功。
  • 是的,它成功了,再次感谢:你真的帮了大忙。我仍然无法编译,因为我收到错误:``` cc: error: unrecognized command line option '-Wno-' ``` 但这绝对解决了我的 ld.gold 问题,谢谢。 (知道为什么会出现新错误吗?)
猜你喜欢
  • 2016-11-27
  • 2015-08-17
  • 2015-09-07
  • 2014-03-31
  • 2017-12-12
  • 2016-10-02
  • 2017-03-25
  • 2013-08-01
  • 2017-08-31
相关资源
最近更新 更多