2014-05-20 10 views
5

Sto provando a costruire il ligjingle di Google seguendo i passaggi Getting started e ho raggiunto la sezione "Costruzione".Linker oro ld.gold -plugin: opzione sconosciuta

Quando ho problema neanche

ninja -C out/Debug 

o

ninja -C out/Release 

ottengo il seguente errore: 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. 

ho cercato

ld.gold --help | grep "plugin" 

e ottenuto:

--plugin PLUGIN    Load a plugin library 
--plugin-opt OPTION   Pass an option to the plugin 

Quindi suppongo l'errore che sto ricevendo è perché da qualche parte nel codice, ld.gold viene chiamato con -plugin xxx piuttosto che --plugin xxx

Sono stato "gioco "con grep -Hr e diverse combinazioni di" plugin "per cercare di trovare il problema, ma finora non ho trovato nulla. Suppongo che sia nascosto da qualche parte in un Makefile.

+0

se si desidera commentare più righe, indentarle di 4 spazi. se si desidera commentare una singola riga, circondarle con un solo apice inverso su entrambi i lati. –

+0

Ok, lo farò. Scusate. – nschoe

+0

non c'è bisogno di scusarsi, non riesco a immaginare che sia facile/divertente fare ciò che hai fatto qui per la formattazione del codice haha ​​ –

risposta

8

Il problema non è che l'opzione -plugin debba essere --plugin. ld.gold accetta entrambe le opzioni se accetta uno di essi.

Ma accetta solo una di esse se l'accumulo di binutils è stato configurato con --enable-plugins. Documentation.

Quando si esegue ld.gold --help | grep "plugin" l'output mostra che --plugin è un'opzione riconosciuta .

Pertanto il problema sembra essere questo: -

/home/nschoe/workspace/webrtc/jingle/trunk/third_party/binutils/Linux_x64/Release/bin/ld.gold ha non stato configurato con --enable-plugins

Quando si esegue ld.gold --help | grep "plugin" si sta eseguendo la prima ld.gold che si trova sul vostro PATH. Probabilmente è /usr/bin/ld.gold dalla tua distribuzione.È può scoprire da corsa:

which ld.gold 

In ogni caso, non è /home/nschoe/workspace/webrtc/jingle/trunk/third_party/binutils/Linux_x64/Release/bin/ld.gold ed è un ld.gold che è stato configurato con --enable-plugins

Se cd in /home/nschoe/workspace/webrtc/jingle/trunk/third_party/binutils/Linux_x64/Release/bin/ ed eseguire:

./ld.gold -plugin 

si wi ll get:

./ld.gold: -plugin: unknown option 

Per risolvere il problema la soluzione ideale è quella di ricostruire /home/nschoe/workspace/webrtc/jingle/trunk/third_party/binutils secondo that Documentation

Se non è possibile ricostruire questi terzi binutils dalla fonte allora sarà probabilmente funzionerà solo se si copia il sistema ld.gold rilevato da which su quello nella terza parte binutils oppure eliminare/rinominare quello di terzi e sostituirlo con un collegamento simbolico a quello di sistema. C'è una possibilità al di fuori che uno di questi hack causerebbe qualche oscura rottura.

+0

Wow grazie mille per questa spiegazione. Hai perfettamente ragione: la versione Linux_x64/Release/bin non ha il supporto per i plugin (il che è molto strano perché questo è il codice di Google che lo ha scaricato (e costruito?), E lo usano per collegare i file .. .) Ad ogni modo sto seguendo la documentazione per provare a ricostruire i binutils con il supporto dei plugin, se fallisce, proverò a creare un link simbolico al mio/usr/bin/ld.gold. Comunque grazie ancora e lo posterò di nuovo qui per dire se sono riuscito. – nschoe

+0

Sì, ha funzionato, grazie ancora: hai davvero aiutato qui. Ancora non riesco a compilare come ottengo l'errore: '' ' cc: errore: non riconosciuta opzione della riga di comando‘-Wno-’ ' '' Ma che sicuramente risolto il mio problema con ld.gold, grazie. (Qualche idea sul perché il nuovo errore?) – nschoe

+0

wow, ottima spiegazione –