繁体   English   中英

GDB“无法打开共享库文件”问题

[英]GDB “cannot open shared object file” Issue

我已经读过gdb说“无法打开共享对象文件”,并且gdb无法打开共享对象文件,并按照说明进行操作。

我有一个链接到共享库文件( /zzz/yyy/xxx.so )的二进制文件。 在将LD_LIBRARY_PATH设置为/zzz/yyy/并运行不带GDB的二进制文件后,它执行得很好。

但是,当我尝试使用GDB调试此二进制文件时,GDB说:

error while loading shared libraries: xxx.so: cannot open shared object file: No such file or directory

我已经有(在.gdbinit中设置):

(gdb)show env LD_LIBRARY_PATH
LD_LIBRARY_PATH = "/zzz/yyy/"

(gdb) show solib-search-path
The search path for loading non-absolute shared library symbol files is "/zzz/yyy/".

在我的系统中:

% printenv LD_LIBRARY_PATH
/zzz/yyy

GDB仍然找不到此共享库的其他可能原因是什么?

但是,当我尝试使用GDB调试此二进制文件时,GDB表示:加载共享库时出错:xxx.so:无法打开共享库文件:没有这样的文件或目录

您误会了:不是GDB这么说,而是动态加载程序。 GDB本身并不关心LD_LIBRARY_PATH设置为什么,它只是运行您的程序。 但是您的程序无法运行。

最常见的原因:您正在~/.cshrc中重新设置LD_LIBRARY_PATH ,并且GDB在单独的shell中运行程序,并且该shell读取了.cshrc ,因此您的程序在错误的环境下执行。

解决方法是使.cshrc 不在非交互式shell中设置LD_LIBRARY_PATH 参见例如这个答案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM