Золотой линкер ld.gold -plugin: неизвестная опция
Я пытаюсь построить Google, следуя инструкциям по началу работы, и я дошел до раздела "Сборка".
Когда я выпускаю либо
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.
1 ответ
Проблема не в том, что -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
обнаружен which
по сравнению с третьим лицом binutils
или удалите / переименуйте сторонний и замените его символической ссылкой на системный. Существует внешняя вероятность, что любой из этих хаков вызовет у вас какой-то неясный перелом.