Страницы

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

пятница, 13 марта 2020 г.

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

#cpp #unix #boost #codeblocks


Пытаюсь использовать 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);
}


Что происходит?
    


Ответы

Ответ 1



.../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

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

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