任何人都可以提供任何见解或方法来调试为什么有限公司无法加载我的库?
从部分strace输出中可以看到它成功打开库,然后报告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
答案 0 :(得分:3)
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
文件不存在?这些文件可以指定需要首先加载的依赖库。