Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gdb 分析核心转储时共享库的相对路径_Gdb_Shared Libraries_Relative Path_Coredump - Fatal编程技术网

Gdb 分析核心转储时共享库的相对路径

Gdb 分析核心转储时共享库的相对路径,gdb,shared-libraries,relative-path,coredump,Gdb,Shared Libraries,Relative Path,Coredump,在进行核心分析时,是否可以为共享库指定相对路径(我希望在编译时而不是调试时指定相对路径) 我将更具体地说明什么和为什么不适合我: LD_LIBRARY_PATH可以指定相对于当前工作目录的相对路径。这不符合我的需要,因为我需要关于可执行文件位置的相对路径 带有$ORIGIN的RPATH是相对于可执行文件位置的相对路径。但它不适合我的需要,因为当我尝试进行核心分析时,它扩展到了绝对路径 那么,如何根据可执行文件的位置为共享库指定相对路径呢?通常,在链接期间,共享库路径并不重要(除非您使用的是rpa

在进行核心分析时,是否可以为共享库指定相对路径(我希望在编译时而不是调试时指定相对路径)

我将更具体地说明什么和为什么不适合我:

  • LD_LIBRARY_PATH可以指定相对于当前工作目录的相对路径。这不符合我的需要,因为我需要关于可执行文件位置的相对路径
  • 带有$ORIGIN的RPATH是相对于可执行文件位置的相对路径。但它不适合我的需要,因为当我尝试进行核心分析时,它扩展到了绝对路径

  • 那么,如何根据可执行文件的位置为共享库指定相对路径呢?

    通常,在链接期间,共享库路径并不重要(除非您使用的是
    rpath
    ,它将库路径保留在共享库本身中)

    当程序运行或调试时,在shell变量
    LD_LIBRARY_PATH
    /etc/LD.so.conf
    /etc/LD.so.conf.d/
    )中设置的路径中搜索共享库
    LD\u LIBRARY\u PATH
    的优先级高于
    LD.so.conf

    导出LD_LIBRARY_PATH=../PATH/to/my/lib1:/path2

    使用相对路径没有问题,它也可以工作


    通常,在链接期间,共享库路径并不重要(除非您使用的是
    rpath
    ,它将库路径保留在共享库本身中)

    当程序运行或调试时,在shell变量
    LD_LIBRARY_PATH
    /etc/LD.so.conf
    /etc/LD.so.conf.d/
    )中设置的路径中搜索共享库
    LD\u LIBRARY\u PATH
    的优先级高于
    LD.so.conf

    导出LD_LIBRARY_PATH=../PATH/to/my/lib1:/path2

    使用相对路径没有问题,它也可以工作


    GDB7.2目前似乎不尊重RPATH

    关于此问题,有两个漏洞:
    http://sourceware.org/bugzilla/show_bug.cgi?id=12249

    GDB7.2目前似乎不尊重RPATH

    关于此问题,有两个漏洞:
    http://sourceware.org/bugzilla/show_bug.cgi?id=12249

    但这是相对于当前工作目录的相对路径,而不是相对于需要库的可执行文件的位置。-Wl,-R$ORIGIN/./lib的问题在于它无论如何都会扩展到绝对路径。但这个相对路径至少是关于可执行文件的位置,但这是关于当前工作目录的相对路径,而不是关于需要库的可执行文件的位置。-Wl,-R$ORIGIN/./lib的问题在于它无论如何都会扩展到绝对路径。但这个相对路径至少是关于可执行文件的位置。
    (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