我正在尝试从控制台开始调试我的应用程序。
> gdb ./Geod
然后在gdb
(gdb) run
我得到了输出:
error while loading shared libraries: libGeo.Cored.so.1:
cannot open shared object file: No such file or directory
系统配置如下:
> echo $LD_LIBRARY_PATH
/home/paceholder/projects/geo/lib/debug
> ls $LD_LIBRARY_PATH
libGeo.Cored.so.1.0.0
libGeo.Cored.so
libGeo.Cored.so.1
libGeo.Cored.so.1.0
(gdb) show solib-search-path
The search path for loading non-absolute shared library symbol files is
/home/paceholder/projects/geo/lib/debug.
答案 0 :(得分:7)
您可以使用gdb中的set environment
命令更改gdb用于启动要调试的程序的环境。从gdb帮助中提取:
(gdb) help set environment
Set environment variable value to give the program.
Arguments are VAR VALUE where VAR is variable name and VALUE is value.
VALUES of environment variables are uninterpreted strings.
This does not affect the program until the next "run" command.
LD_LIBRARY_PATH
的示例:
(gdb) set environment LD_LIBRARY_PATH /home/paceholder/projects/geo/lib/debug
答案 1 :(得分:1)
error while loading shared libraries: libGeo.Cored.so.1
有两个可能的原因:
export LD_LIBRARY_PATH
- GDB创建了一个新shell,未导出的变量未复制到该新shell ~/.bashrc
或一些重新设置LD_LIBRARY_PATH
(不要这样做!)您可以通过执行以下操作验证上述任何一种情况:
(gdb) shell
$ echo $LD_LIBRARY_PATH
$ ls $LD_LIBRARY_PATH