LINUX.ORG.RU

dlopen - pthread_detach


0

1

Загружаю библиотеку вызовом dlopen. Получаю 0. dlerror выдает следующую строчку: libPLX9050.so: undefined symbol: pthread_detach

В библиотеке libPLX9050.so используется boost.

#include "boost/thread/thread.hpp"
#include "boost/thread/mutex.hpp"
#include "boost/thread/condition.hpp"
#include "boost/lambda/lambda.hpp"

Компилировал с ключом -lboost_thread.

С чем может быть связана данная проблема?


Ответ на: комментарий от Deleted

При -pthreads никакой реакции, всё тот же undefined symbol: pthread_detach.

ikseg
() автор топика
Ответ на: комментарий от Boy_from_Jungle

Нет, увы ( Однозначная рекация на -lpthread. Cannot find new threads: generic error.

Вообще в коде потоки не используются. Только элементы синхронизации.

ikseg
() автор топика
Ответ на: комментарий от Boy_from_Jungle

из boost используется следующее:

boost::mutex, boost::condition, boost::xtime

По идее, всё это описано в libboost_threads.a ...

ikseg
() автор топика

А внутри самой подгружаемой библиотеки, случайно, потоки pthreads не используются? Runtime к ней не статически прикручен? Версионность runtime-а библиотеки и приложения совпадает?

one_more_hokum ★★★
()
Ответ на: комментарий от one_more_hokum

нет, нет, да.)

Заметил следующий момент. Если закоментировать все вызовы бустовых функций condition.timed_wait( ... ) , то библиотека загружается без проблем.

Какое-то концептуальное непонимание похоже.

Повторюсь: Вне библиотеки данный код отлично работает. При попытке загнать код в библиотеку, компиляция проходит успешно, но либа не грузится,выдавая по dlerror - undefined symbol: pthread_detach.

ikseg
() автор топика
Ответ на: комментарий от ikseg

boost-овые потоки на POSIX-системах оборачивают pthread, так что в принудительном подключении pthread смысла нет. А что будет, если собрать библиотеку без никто, с одним вызовом либо этого pthread_detach, либо какой ещё функции, обращающейся к ней?

one_more_hokum ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.