Страницы

Поиск по вопросам

суббота, 1 июня 2019 г.

libpthread.so.0: error adding symbols: DSO missing from command line

Пытаюсь использовать message_queue. Собственно код ничего не делает, кроме вызова конструктора. Часть build log
/usr/bin/ld: obj/Debug/main.o: неопределённая ссылка на символ «pthread_condattr_setpshared@@GLIBC_2.2.5» //lib/x86_64-linux-gnu/libpthread.so.0: error adding symbols: DSO missing from command line collect2: error: ld returned 1 exit status
using namespace boost::interprocess;
int main() { message_queue(open_or_create,"message_queue" ,100 ,100); }
Что происходит?


Ответ

.../libpthread.so.0: error adding symbols: DSO missing from command line
вот тут советуют добавить опцию
-lpthread
к опциям компилятора.

для того, чтобы скомпилировать ваш пример, мне пришлось добавить первой строкой:
#include
и передать компилятору опции -lrt -lpthread. тогда программа test из файла test.cpp компилируется удачно:
$ CPPFLAGS="-lrt -lpthread" make test g++ -lrt -lpthread test.cpp -o test
описанная же вами ошибка легко воспроизводится при удалении опции -lpthread
$ CPPFLAGS="-lrt" make test g++ -lrt test.cpp -o test /usr/bin/ld: /tmp/cc8fR82D.o: undefined reference to symbol 'pthread_condattr_setpshared@@GLIBC_2.2.5' //lib/x86_64-linux-gnu/libpthread.so.0: error adding symbols: DSO missing from command line collect2: error: ld returned 1 exit status : recipe for target 'test' failed make: *** [test] Error 1

Комментариев нет:

Отправить комментарий