dlopen () находит библиотеку в том же каталоге, но не в другом каталоге, даже с установленным LD_LIBRARY_PATH - PullRequest
0 голосов
/ 10 апреля 2019

Обновление

Я был дураком - я проверил, существует ли файл (в той же папке), прежде чем передать его в dlopen() .. поэтому вопрос недействителен, я его закрою.

Оригинальный вопрос

Для execuable, которому нужно связать с кучей общих библиотек в другой папке, вы можете просто сделать export LD_LIBRARY_PATH=/some/other/folder, а затем, когда вы запустите ваш exectuable, он сможет их найти - и все это работает, как и ожидалось.

Однако одно из моих приложений использует dlopen () для открытия общей библиотеки во время выполнения (в виде подключаемого модуля). Я использую dlopen("libsome_lilb.so", RTLD_NOW).

Итак, это работает, если плагин совместно используемой библиотеки находится в той же папке, но не в другой папке. Итак, я установил LD_LIBRARY_PATH и повторил попытку, но все равно не смог найти библиотеку.

Это относится к этому вопросу: c-linux-dlopen-cant-find-so-library

Но у этого OP, похоже, есть проблема этой проблемы, когда они пытаются открыть .so в той же папке ... поэтому я не вижу там решения.

Не совсем уверен, с чем повозиться сейчас ... может быть, некоторые из вариантов dlopen("name", options);? (это предположение)

...