我正在调用lt_dlopen
并且找不到通用文件错误(已翻译的错误文本)。如何获得有关实际失败的更多信息,因为文件肯定存在。
这是一个加载C ++库的C ++程序。在同一个程序的其他地方,我使用相同的命令打开其他库没有问题,因此我担心它可能是这个库特有的东西。我使用了ldd
并且满足了库的所有依赖关系。
答案 0 :(得分:3)
我偶然发现了一些有用的东西:
export LD_DEBUG=all
然后继续筛选极端质量的输出。在这种情况下,我发现了“查找错误”,其中一个符号无法解析。我不知道为什么,但这可能与这个问题无关。
答案 1 :(得分:0)
在$ CFLAGS中使用“-DLT_DEBUG_LOADERS”重新编译libtool。调整LD_LIBRARY_PATH,以便程序找到此调试libltdl.so而不是系统调试。那个调试版本的英语将为每个加载器尝试打开目标打印显式错误,其编写的详细程度远低于LD_DEBUG = all。
答案 2 :(得分:-1)
来自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 自初始化或自上次调用以来发生过。