如何找到应用程序链接的 libc 版本?

如何找到应用程序链接的 libc 版本?

当使用 g++ 构建应用程序时,我没有明确地将该libc库作为要链接的库传递,就像您对其他库执行的操作一样(例如传递-lpthread)。

我知道libclibc.so.6这样的名称,但我知道这实际上不是一个库,而是类似于指向另一个版本的指针libc(例如libc-2.15.so)。

如果我的计算机上有多个版本libc,我怎样才能知道实际使用的是哪一个libc.so.6

答案1

ldd应该是您选择的工具。它为您提供实际链接的共享库。

confus@confusion:~/misc/test$ ldd -r -v testendian
    linux-vdso.so.1 =>  (0x00007fffbcfff000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1a5a4c5000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f1a5a8a5000)

    Version information:
    ./testendian:
        libc.so.6 (GLIBC_2.2.5) => /lib/x86_64-linux-gnu/libc.so.6
    /lib/x86_64-linux-gnu/libc.so.6:
        ld-linux-x86-64.so.2 (GLIBC_2.3) => /lib64/ld-linux-x86-64.so.2
        ld-linux-x86-64.so.2 (GLIBC_PRIVATE) => /lib64/ld-linux-x86-64.so.2

如果是 libc,您只需运行该.so文件即可获知库版本。

confus@confusion:~/misc/test$ /lib/x86_64-linux-gnu/libc.so.6 
GNU C Library (Ubuntu EGLIBC 2.15-0ubuntu10) stable release version 2.15, by Roland McGrath et al.

相关内容