Сбой dlopen с файлом не найден, когда файл находится в правильном пути - PullRequest
1 голос
/ 15 октября 2010

У меня есть библиотека, собранная с использованием libtool, которая устанавливается в каталог библиотеки пакета, /usr/local/lib/myprog/libmylib.so.Я динамически загружаю библиотеку в своем коде с помощью libltdl.Когда я пытаюсь загрузить эту библиотеку на одну машину, она работает просто отлично.С другой, с той же сборкой и библиотекой, установленной в том же месте, я получаю ошибку «файл не найден».

Если я вызываю lt_dlforeachfile непосредственно перед lt_dlopenext (который я использую для загрузкибиблиотека), затем, распечатав имена файлов, я вижу, что нужная библиотека найдена в пути поиска.Но затем сразу после загрузки происходит сбой с ошибкой «файл не найден».Есть предложения?

ОБНОВЛЕНИЕ

Я попытался перейти на использование dlopen и явно указать абсолютный путь к библиотеке.Это по-прежнему работает в некоторых системах, а не в других.

1 Ответ

1 голос
/ 15 октября 2010

Оказалось, что libltdl скрывает настоящую ошибку. «файл не найден» был из другой библиотеки, от которой зависела библиотека, которую я загружал. Я обнаружил это при использовании dlerror() для печати сообщений об ошибках. После установки недостающей библиотеки все хорошо!

...