了解 ldd verbose:多个版本是什么?

understanding ldd verbose: what are the multiple versions?

当我在详细模式下 运行 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
            ...

What does it mean when multiple versions are listed?

这意味着您的二进制引用 symbols 这些版本。另请参阅 and 答案。

Does that mean that any of those versions workable, or that it needs all those versions?

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