如果lt_dlopen失败,如何获取更多信息?

时间:2012-03-05 12:43:23

标签: c++ linux gcc libtool

我正在调用lt_dlopen并且找不到通用文件错误(已翻译的错误文本)。如何获得有关实际失败的更多信息,因为文件肯定存在。

这是一个加载C ++库的C ++程序。在同一个程序的其他地方,我使用相同的命令打开其他库没有问题,因此我担心它可能是这个库特有的东西。我使用了ldd并且满足了库的所有依赖关系。

3 个答案:

答案 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   自初始化或自上次调用以来发生过。