我打电话lt_dlopen
并获得一个通用文件未find错误(翻译错误文本)。 我怎样才能获得更多关于实际上失败的信息,因为这个文件绝对存在。
这是一个加载C ++库的C ++程序。 在同一个程序的其他地方,我使用相同的命令打开其他库没有问题,因此我担心它可能是这个库特定的东西。 我已经使用ldd
并满足了库的所有依赖关系。
我偶然发现了一些这样的工作:
export LD_DEBUG=all
然后继续筛选极端大量的产出。 在这种情况下,我发现“查找错误”,其中一个符号无法解析。 我不确定为什么,但这可能与这个问题无关。
使用$ CFLAGS中的“-DLT_DEBUG_LOADERS”重新编译libtool。 调整LD_LIBRARY_PATH,以便您的程序将找到此调试libltdl.so而不是系统之一。 ltdl的调试版本将为每个加载器尝试打开目标的显式错误比LD_DEBUG = all少得多。
从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。