9

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

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

2 回答 2

12

您可以使用 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
于 2013-11-27T09:57:55.883 回答
3

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
于 2013-04-27T17:08:57.773 回答