DSO отсутствует в командной строке

Я пытаюсь скомпилировать программу на С++ следующим образом:

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

Однако я получаю следующую ошибку:

/usr/bin/ld: /tmp/cct6xeXD.o: undefined reference to symbol
'pthread_join@@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

Я понятия не имею, что означает эта ошибка. Любая помощь будет оценена.


person srai    schedule 07.06.2014    source источник


Ответы (1)


DSO здесь означает Динамический общий объект; поскольку в сообщении об ошибке говорится, что оно отсутствует в командной строке, я думаю, вам нужно добавить его в командную строку.

То есть попробуйте добавить -lpthread в свою командную строку.

person anatolyg    schedule 07.06.2014
comment
Спасибо, у меня была аналогичная проблема с другим проектом, и я смог решить ее таким образом. Я просто хочу добавить, что теперь, когда я присмотрелся, я вижу, что ошибка на самом деле очень недвусмысленно указывает на то, в чем проблема. Я имею в виду, там сказано, что pthread_join не определено и что оно принадлежит libpthread.so. Но, как и srai, я понятия не имел, что означает ошибка, пока не пришел сюда. :-) - person Alex; 02.07.2015
comment
Показывает ли ошибка, что ld знает, что необходимый DSO — //lib/arm-linux-gnueabihf/libpthread.so.0? - person acgtyrant; 21.12.2015