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