[英]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.