2014-05-20 15 views
5

Próbuję zbudować ligjingle Google po krokach Getting started i dotarłem do sekcji "Budynek".Złoto linker ld.gold -plugin: nieznana opcja

Kiedy wydawać albo

ninja -C out/Debug 

lub

ninja -C out/Release 

pojawia się następujący błąd: 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. 

próbowałem

ld.gold --help | grep "plugin" 

i otrzymała:

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

Więc przypuszczam błąd Dostaję dlatego gdzieś w kodzie, ld.gold nazywa się -plugin xxx zamiast --plugin xxx

byłem "gry "z grep -Hr i różnymi kombinacjami" wtyczki ", aby spróbować znaleźć problem, ale jak dotąd niczego nie znalazłem. Przypuszczam, że jest ukryty gdzieś w Makefile.

+0

jeśli chcesz skomentować wiele linii, wcń je 4 spacje. jeśli chcesz skomentować pojedynczą linię, otocz je jednym suwakiem po obu stronach. –

+0

Dobra, zrobię. Przepraszam. – nschoe

+0

Nie muszę przepraszać, po prostu nie mogę sobie wyobrazić, że to łatwe/przyjemne zrobić to, co tu robisz, do haha ​​kodowania –

Odpowiedz

8

Problem polega nie na tym, że opcja -plugin powinna być --plugin. ld.gold akceptuje obie opcje, jeśli akceptuje którekolwiek z nich.

Ale to akceptuje tylko jeden z nich jeśli kompilacja z binutils został skonfigurowany --enable-plugins. Documentation.

Po uruchomieniu ld.gold --help | grep "plugin" dane wyjściowe pokazują, że --plugin jest uznaną opcją.

Dlatego problem wydaje się być to: -

/home/nschoe/workspace/webrtc/jingle/trunk/third_party/binutils/Linux_x64/Release/bin/ld.gold ma nie został skonfigurowany z --enable-plugins

Po uruchomieniu ld.gold --help | grep "plugin" jesteś wykonując pierwsze ld.gold , które znajduje się na PATH. Jest to prawdopodobnie /usr/bin/ld.gold z Twojej dystrybucji.Można dowiedzieć uruchamiając:

which ld.gold 

Tak czy inaczej, to nie jest /home/nschoe/workspace/webrtc/jingle/trunk/third_party/binutils/Linux_x64/Release/bin/ld.gold i jest ld.gold że został został skonfigurowany z --enable-plugins

Jeśli cd do /home/nschoe/workspace/webrtc/jingle/trunk/third_party/binutils/Linux_x64/Release/bin/ i uruchom:

./ld.gold -plugin 

Ci wi ll dostać:

./ld.gold: -plugin: unknown option 

Aby rozwiązać ten problem, idealnym rozwiązaniem jest odbudowa /home/nschoe/workspace/webrtc/jingle/trunk/third_party/binutils zgodnie that Documentation

Jeśli nie można przebudować te osoby trzeciej binutils ze źródła to będzie prawdopodobnie działa, jeśli tylko skopiować system ld.gold wykryty przez which nad tym w stronie trzeciej binutils, lub usuń/zmień nazwę strony trzeciej i zastąp ją dowiązaniem symbolicznym na systemowe. Istnieje zewnętrzna szansa, że ​​któryś z tych hackerów spowodowałby jakieś niejasne zerwanie.

+0

Wow, dziękuję bardzo za to wyjaśnienie. Masz całkowitą rację: wersja Linux_x64/Release/bin nie obsługuje wtyczek (co jest bardzo dziwne, ponieważ jest to kod Google, który pobrał (i zbudował?) To i używa go do łączenia plików. .) W każdym razie postępuję zgodnie z dokumentacją, aby spróbować przebudować binutils z obsługą wtyczek, jeśli to się nie powiedzie, postaram się utworzyć dowiązanie symboliczne do mojego /usr/bin/ld.gold. W każdym razie jeszcze raz dzięki, a ja opublikuję tutaj ponownie, aby powiedzieć, czy udało mi się. – nschoe

+0

Tak, zadziałało, jeszcze raz: bardzo ci pomogło. Wciąż nie mogę skompilować jak pojawia się błąd: '' ' CC: error: nierozpoznana opcja wiersza poleceń„-Wno-” ' '' Ale to zdecydowanie rozwiązać mój problem z ld.gold, dzięki. (Jakiś pomysł, dlaczego nowy błąd?) – nschoe

+0

wow, świetne wyjaśnienie –