2014-06-07 45 views
34

Próbuję skompilować program w C++ tak:DSO brakuje linii poleceń

$ g++ -o Sniffer_Train main.cpp Sniffer_train.cpp Sniffer_train.h -lmysqlclient -lpcap 

Jednak pojawia się następujący błąd:

/usr/bin/ld: /tmp/cct6xeXD.o: undefined reference to symbol 
'[email protected]@GLIBC_2.4' //lib/arm-linux-gnueabihf/libpthread.so.0: 
error adding symbols: DSO missing from command line 

collect2: error: ld returned 1 exit status 

nie mam pojęcia, co oznacza ten błąd. Każda pomoc zostanie bardzo doceniona.

+0

Zobacz także [Dziwny błąd łączenia: brak DSO z wiersza poleceń] (http://stackoverflow.com/q/19901934), [Brak DSO z wiersza poleceń] (http://stackoverflow.com/q/24096807) i [Błąd łączenia: brak DSO z wiersza poleceń] (http://stackoverflow.com/q/24989432). – jww

+1

Możliwy duplikat [Dziwny błąd łączenia: brak DSO z wiersza poleceń] (http://stackoverflow.com/questions/19901934/strange-linking-error-dso-missing-from-command-line) – jww

Odpowiedz

56

DSO oznacza tutaj Dynamic Shared Object; ponieważ komunikat o błędzie mówi, że brakuje go w wierszu poleceń, domyślam się, że musisz dodać go do wiersza poleceń.

To znaczy, spróbuj dodać -lpthread do linii poleceń.

+0

Dzięki, miałem podobny problem z innym projektem i był w stanie rozwiązać go w ten sposób. Chcę tylko dodać, że teraz, gdy przyjrzałem się bliżej, widzę, że błąd jest bardzo nielogiczny w kwestii problemu. To znaczy, mówi się, że 'pthread_join' jest niezdefiniowany i że należy do' libpthread.so'. Ale tak jak w przypadku srai, nie miałem pojęcia, co oznaczało ten błąd, dopóki tu nie przyjechałem. :-) – Alex

+4

Czy błąd pokazuje, że ld zna potrzebne DSO to '// lib/arm-linux-gnueabihf/libpthread.so.0'? – acgtyrant

-1

Również spotkałem podobny problem, po rozliczeniu, biblioteka, która musi być podłączony.
Ale w rzeczywistości możesz zapomnieć połączyć bibliotekę.