Пытаюсь использовать 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
Комментариев нет:
Отправить комментарий