gdb无法打开共享对象文件

时间:2013-04-27 16:42:03

标签: linux gdb shared-libraries

我正在尝试从控制台开始调试我的应用程序。

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

2 个答案:

答案 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