ldd -v 中的版本信息是什么意思?

What does version info in ldd -v mean?

Version information:
    /usr/lib/lapack/liblapack.so:
        libc.so.6 (GLIBC_2.14) => /lib/x86_64-linux-gnu/libc.so.6
        libc.so.6 (GLIBC_2.4) => /lib/x86_64-linux-gnu/libc.so.6
        libc.so.6 (GLIBC_2.2.5) => /lib/x86_64-linux-gnu/libc.so.6
        libgcc_s.so.1 (GCC_4.0.0) => /lib/x86_64-linux-gnu/libgcc_s.so.1
        libgfortran.so.3 (GFORTRAN_1.0) => /usr/lib/x86_64-linux-gnu/libgfortran.so.3
        libgfortran.so.3 (GFORTRAN_1.4) => /usr/lib/x86_64-linux-gnu/libgfortran.so.3
        libm.so.6 (GLIBC_2.2.5) => /lib/x86_64-linux-gnu/libm.so.6

所以有 3 行 libc.so.6,版本号为 GLIBC_2.xx

这是什么意思?这个 liblapack.so 需要什么版本的 libc.so.6?

如何获得liblapack.so的版本?

What does that mean?

这意味着 liblapack.so 需要来自 libc.so.6 版本 GLIBC_2.2.5GLIBC_2.4GLIBC_2.14 的版本化符号。您可以阅读版本化符号 here.

What version of libc.so.6 does this liblapack.so require?

需要 2.14 或更高版本。一般来说,GLIBC 从不删除符号,只会添加新符号,因此即使在最新的 GLIBC-2.24 中,仍会提供 GLIBC_2.2.5 版本的符号。

如果它确实删除了这样的 "old" 版本化符号,那将破坏任何依赖于该符号的旧二进制文件(这就是它没有完成的原因)。

How can I get liblapack.so's version?

看起来 liblapack.so 本身没有使用任何版本化符号。您可以查看您的包管理器以了解您拥有的 liblapack.so 版本。类似于:

dpkg -S /usr/lib/lapack/liblapack.so
liblapack-dev: /usr/lib/lapack/liblapack.so

dpkg -l liblapack-dev
...
ii  liblapack-dev  3.5.0-2ubuntu1  amd64 Library of linear algebra routines 3 - static version