尽管文件存在,但dlopen返回文件未找到

时间:2015-12-22 11:42:20

标签: c linux

我使用以下代码 -

pxSFunc->handle = dlopen(psFilePath, RTLD_LAZY);
if (!pxSFunc->handle) {
     printf("%s Ignored loading the lib: %s\n", dlerror(), psFilePath);

psFilePath指向有效路径(可读和可访问)。

运行此部分后,我收到以下错误:

File not found Ignored loading the lib: /usr/lib/libnetwork.so

我想知道应该使用哪些调试工具来调试此问题?

我向LD_LIBRARY_PATH添加了所有相关路径,并且在此lib上运行'ldd'显示没有问题。 也许有人对这个问题有什么看法?

提前谢谢大家!

1 个答案:

答案 0 :(得分:4)

您可以尝试查看链接器中的所有调试信息,以查看它失败的位置:

 $ export LD_DEBUG=all

并运行您的程序。如果要将调试信息重定向到文件,还有LD_DEBUG_OUTPUT。您可以从manual看到更多信息。

您还可以使用ldd查看依赖关系列表:

$ ldd /usr/lib/libnetwork.so

输出将很明显,并且它将告诉是否缺少任何依赖。

相关问题