理解ldd verbose:有多个版本?

时间:2019-03-07 06:24:34

标签: dynamic-linking ldd

当我在详细模式下运行ldd时,将得到以下输出。列出多个版本是什么意思?这是否意味着这些版本中的任何一个都可行,或者它需要所有这些版本?

    ldd -v lbrycrd-linux\ \(4\)/lbrycrdd 
        linux-vdso.so.1 (0x00007ffd167cf000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007eff77399000)
        librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007eff77191000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007eff76df3000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007eff76bdb000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007eff767ea000)
        /lib64/ld-linux-x86-64.so.2 (0x00007eff79f90000)

        Version information:
        lbrycrd-linux (4)/lbrycrdd:
            ld-linux-x86-64.so.2 (GLIBC_2.3) => /lib64/ld-linux-x86-64.so.2
            librt.so.1 (GLIBC_2.2.5) => /lib/x86_64-linux-gnu/librt.so.1
            libm.so.6 (GLIBC_2.27) => /lib/x86_64-linux-gnu/libm.so.6
            libm.so.6 (GLIBC_2.2.5) => /lib/x86_64-linux-gnu/libm.so.6
            libgcc_s.so.1 (GCC_3.3) => /lib/x86_64-linux-gnu/libgcc_s.so.1
            libgcc_s.so.1 (GCC_3.0) => /lib/x86_64-linux-gnu/libgcc_s.so.1
            libgcc_s.so.1 (GCC_4.2.0) => /lib/x86_64-linux-gnu/libgcc_s.so.1
            libpthread.so.0 (GLIBC_2.3.4) => /lib/x86_64-linux-gnu/libpthread.so.0
            libpthread.so.0 (GLIBC_2.3.3) => /lib/x86_64-linux-gnu/libpthread.so.0
            libpthread.so.0 (GLIBC_2.2.5) => /lib/x86_64-linux-gnu/libpthread.so.0
            ...

1 个答案:

答案 0 :(得分:0)

  

列出多个版本是什么意思?

这意味着您的二进制文件在这些版本中引用了符号。另请参见thisthis答案。

  

这是否意味着这些版本中的任何一个都可行,或者它需要所有这些版本?

后者。或更确切地说,它需要一个提供所有这些符号的库,对于GLIBC,通常这意味着GLIBC_2.27 ,以及GCC_4.2.0 或以后为libgcc