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中的某个地方.
问题不在于-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