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

dea*_*zvi 2 c linux

我正在使用以下代码 -

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

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

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

File not found Ignored loading the lib: /usr/lib/libnetwork.so
Run Code Online (Sandbox Code Playgroud)

我想知道应该使用什么调试工具来调试这个问题?

我将所有相关路径添加到 LD_LIBRARY_PATH,并且在这个库上运行 'ldd' 没有显示任何问题。也许有人对这个问题与什么有关有什么想法?

谢谢大家!

P.P*_*.P. 5

您可以尝试查看来自链接器的所有调试信息,以查看它究竟在哪里失败:

 $ export LD_DEBUG=all
Run Code Online (Sandbox Code Playgroud)

并运行你的程序。还有LD_DEBUG_OUTPUT,如果你想重定向调试信息保存到文件。您可以从手册中看到更多信息。

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

$ ldd /usr/lib/libnetwork.so
Run Code Online (Sandbox Code Playgroud)

输出将很容易理解,它会告诉您是否缺少任何依赖项。