Как получить больше информации, если lt_dlopen не работает? - PullRequest
1 голос
/ 05 марта 2012

Я звоню lt_dlopen и получаю общий файл, который не найден (переведен ошибочный текст).Как я могу получить больше информации о том, что на самом деле не работает, так как файл определенно есть.

Это программа C ++, загружающая библиотеку C ++.В другом месте этой же программы я использую ту же команду для открытия других библиотек без проблем, поэтому я боюсь, что это может быть что-то специфическое для этой библиотеки.Я использовал ldd и все эти зависимости библиотеки выполнены.

Ответы [ 3 ]

3 голосов
/ 05 марта 2012

Я наткнулся на что-то подобное:

export LD_DEBUG=all

И затем приступил к просеиванию через крайнюю массу продукции.В этом случае я обнаружил «ошибку поиска», и один из символов не удалось устранить.Я не уверен, почему, но это, возможно, не относится к этому вопросу.

0 голосов
/ 29 ноября 2015

Перекомпилируйте libtool с "-DLT_DEBUG_LOADERS" в $ CFLAGS. Настройте LD_LIBRARY_PATH так, чтобы ваша программа нашла этот отладочный libltdl.so вместо системного. Эта отладочная версия ltdl будет печатать явные ошибки при каждой попытке загрузчика открыть цель с гораздо меньшей детализацией, чем LD_DEBUG = all.

0 голосов
/ 05 марта 2012

С http://www.delorie.com/gnu/docs/libtool/libtool_46.html:

Function: lt_dlhandle lt_dlopen (const char *filename)

[...] Если по какой-либо причине lt_dlopen завершается неудачей, возвращается NULL.

Function: const char * lt_dlerror (void)

Возвращает читаемую человеком строку, описывающую самую последнюю ошибку, произошло из любой из функций libltdl. Вернуть NULL, если нет ошибок произошло с момента инициализации или с момента последнего вызова.

...