如何在GDB会话中指定共享库路径并加载缺失的依赖库
在GDB会话中指定共享库路径的解决办法
遇到这种共享库找不到的问题,不用退出GDB重新设置系统环境变量,直接在当前会话里就能搞定,给你两种实用的方法:
方法1:使用GDB内置的共享库搜索路径命令
GDB自带专门管理共享库搜索路径的命令,就是set solib-search-path,操作步骤很清晰:
- 先进入GDB并加载你的二进制文件:
gdb ./your_binary - 执行命令设置库路径,把
/path/to/libshr1替换成实际存放libshr1.so的目录:
set solib-search-path /path/to/libshr1
- 可以用下面的命令验证路径是否设置成功:
show solib-search-path
设置完成后直接输入run,程序就能正常加载目标共享库了。这个路径是GDB专属的,不会影响系统全局的环境变量。
方法2:在GDB中设置LD_LIBRARY_PATH环境变量
如果你更习惯系统层面LD_LIBRARY_PATH的查找逻辑,也可以直接在GDB里设置这个环境变量:
- 进入GDB后,执行命令设置(替换成实际路径):
set env LD_LIBRARY_PATH /path/to/libshr1
- 要是想一次性完成启动和设置,也可以在启动GDB时直接指定:
gdb -ex 'set env LD_LIBRARY_PATH /path/to/libshr1' ./your_binary
- 验证环境变量是否生效,用这条命令:
show env LD_LIBRARY_PATH
之后运行run,程序就会按照这个环境变量的配置去查找共享库了。
小提示
如果你的共享库分散在多个目录下,两种方法都支持用冒号:分隔多个路径,比如:
set solib-search-path /path/to/first/lib:/path/to/second/lib
或者
set env LD_LIBRARY_PATH /path/to/first/lib:/path/to/second/lib
内容的提问来源于stack exchange,提问作者ibse
相关产品推荐
相关产品推荐

