libtool не может загрузить библиотеку - PullRequest
0 голосов
/ 22 января 2012

Может ли кто-нибудь предоставить какую-либо информацию или способ отладки, почему ltdl не может загрузить мою библиотеку? Как вы можете видеть из вывода частичных строк, он успешно открывает библиотеку, затем сообщает file not found, а затем переходит к успешной загрузке другой библиотеки, созданной таким же образом. Как я могу отладить это? Я годами гуглял и не нашел полезных способов отладки.

open("server/modules/smtp.la", O_RDONLY) = -1 ENOENT (No such file or directory)
open("server/modules/smtp.so", O_RDONLY) = 3
getcwd("/home/david/Documents/workspace/dvnmon", 128) = 39
1327209900.751672 3602 Failed to open server/modules/smtp: file not found
open("server/modules/snmp.la", O_RDONLY) = -1 ENOENT (No such file or directory)
open("server/modules/snmp.so", O_RDONLY) = 3
getcwd("/home/david/Documents/workspace/dvnmon", 128) = 39
open("/etc/ld.so.cache", O_RDONLY)      = 3
open("/usr/lib64/libnetsnmp.so.15", O_RDONLY) = 3
open("/usr/lib64/libcrypto.so.1.0.0", O_RDONLY) = 3
open("/lib64/libz.so.1", O_RDONLY)      = 3
1327209900.800507 3602 Plugin CSNMPMonitor interface version 0.1 loaded

1 Ответ

3 голосов
/ 23 января 2012

lt_dlopen() сообщает FILE_NOT_FOUND всякий раз, когда не удается загрузить динамическую библиотеку.Это может произойти, даже если файл существует.

Сначала я бы сравнил вывод ldd server/modules/smtp.so и вывод ldd server/modules/snmp.so.Может быть, у одного из них отсутствует зависимость?

Вы также можете попробовать export LD_DEBUG=all (подробности см. man ld.so).

Также из вашего вопроса не ясно, являются ли файлыв server/modules/ фактически модули Libtool.Если они есть, почему нет файлов *.la?Эти файлы могут указывать зависимые библиотеки, которые должны быть загружены первыми.

...