2014-06-07 15 views
34

Tôi cố gắng để biên dịch một chương trình C++ như thế này:DSO mất tích từ dòng lệnh

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

Tuy nhiên tôi nhận được lỗi sau:

/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 

Tôi không có ý tưởng những gì lỗi này nghĩa là gì. Chúng tôi rất trân trọng bất kỳ sự giúp đỡ nào.

+0

Cũng thấy [Lỗi liên kết lạ: DSO bị thiếu trong dòng lệnh] (http://stackoverflow.com/q/19901934), [DSO bị thiếu trong dòng lệnh] (http://stackoverflow.com/q/24096807) và [Lỗi liên kết: DSO bị thiếu trong dòng lệnh] (http://stackoverflow.com/q/24989432). – jww

+1

Có thể trùng lặp của [Lỗi liên kết lạ: DSO bị thiếu trong dòng lệnh] (http://stackoverflow.com/questions/19901934/strange-linking-error-dso-missing-from-command-line) – jww

Trả lời

56

DSO ở đây có nghĩa là Dynamic Shared Object; vì thông báo lỗi cho biết nó bị thiếu trong dòng lệnh, tôi đoán bạn phải thêm nó vào dòng lệnh.

Tức là, hãy thử thêm -lpthread vào dòng lệnh của bạn.

+0

Cảm ơn, tôi đã có vấn đề tương tự với một số dự án khác và đã có thể giải quyết nó theo cách này. Tôi chỉ muốn thêm rằng bây giờ mà tôi nhìn gần hơn tôi có thể thấy rằng lỗi thực sự là rất phi thường về vấn đề là gì. Ý tôi là, nó nói rằng 'pthread_join' là không xác định và nó thuộc về' libpthread.so'. Nhưng giống như srai tôi không biết liệu lỗi có nghĩa là gì cho đến khi tôi đến đây. :-) – Alex

+4

Lỗi có cho thấy rằng LD biết DSO cần thiết là '// lib/arm-linux-gnueabihf/libpthread.so.0'? – acgtyrant

-1

Tôi cũng gặp phải sự cố tương tự, sau khi giải quyết, một thư viện cần được kết nối.
Nhưng trên thực tế, bạn có thể quên kết nối thư viện.

Các vấn đề liên quan