在进行核心分析时是否可以指定共享库的相对路径(我想在编译时指定相对路径而不是调试时间)
(gdb) info sharedlibrary
From To Syms Read Shared Object Library
0x00007f4433ffef00 0x00007f443402cc08 Yes (*) /lib/libssl.so.0.9.8
0x00007f44334d6a00 0x00007f44335e9920 Yes /lib/libc.so.6
0x00007f443423eaf0 0x00007f4434257994 Yes /lib64/ld-linux-x86-64.so.2
No ./lib/myplugin.so
No /opt/lib/mylibc.so
0x00007f443237a190 0x00007f443237d7f8 Yes /lib/librt.so.1
0x00007f44320f8ef0 0x00007f44321392d8 Yes /lib/libm.so.6
0x00007f4431ee08b0 0x00007f4431eeffe8 Yes (*) /lib/libgcc_s.so.1
我将更具体地说明什么以及为什么对我不起作用:
那么如何针对可执行文件的位置指定共享库的相对路径?
答案 0 :(得分:1)
似乎GDB 7.2目前不尊重RPATH。
关于此问题,有两个错误: http://sourceware.org/bugzilla/show_bug.cgi?id=12250 http://sourceware.org/bugzilla/show_bug.cgi?id=12249
答案 1 :(得分:0)
通常,共享库路径在链接期间无关紧要(除非您使用rpath
,这会将库路径保留在共享库本身中。)
运行或调试程序时,将在shell变量LD_LIBRARY_PATH
和/etc/ld.so.conf
(/etc/ld.so.conf.d/
)中设置的路径中搜索共享库。 LD_LIBRARY_PATH
的优先级高于ld.so.conf
。
export LD_LIBRARY_PATH = .. / path / to / my / lib1:/ path2
使用相对路径没问题,它也可以正常工作