gdb无法打开共享对象文件

我正试图从控制台开始debugging我的应用程序。

> gdb ./Geod 

然后在gdb中

 (gdb) run 

我得到的输出:

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

系统configuration如下:

 > 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. 

您可以使用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 

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