Os sistemas GNU / Linux geralmente usam glibc (família Fedora / Redhat, Arch) ou seu primo próximo, eglibc (família Debian / Ubuntu); já que o eglibc está sendo fundido novamente na glibc ( veja EGLIBC 2.19 Branch Created em "News" ), no futuro próximo, todos serão glibc novamente.
A maneira mais fácil de verificar a versão exata é perguntar a ldd
, que é fornecido com a biblioteca C.
No Fedora 20:
> ldd --version
ldd (GNU libc) 2.18
Isso é glibc 2.18.
Em Raspbian (porta Debian 7 para ARMv6 Broadcom SoC):
> ldd --version
ldd (Debian EGLIBC 2.13-38+rpi2) 2.13
Isso é eglibc 2.13.
Se, por qualquer motivo, você tiver misturado e combinado algumas partes ou não tiver certeza sobre ldd
, poderá consultar a biblioteca C. diretamente.
> whereis libc.so
libc: /usr/lib64/libc.a /usr/lib64/libc.so /usr/share/man/man7/libc.7.gz
Nenhum desses é executável, mas eles fornecem uma pista sobre onde encontrar um.
> $(find /usr/lib64/ -executable -name "*libc.so*") --version
GNU C Library (GNU libc) stable release version 2.18, by Roland McGrath et al.
No entanto, não é necessariamente tão fácil, porque a biblioteca C não precisa residir em algum lugar whereis
pode encontrá-lo.
> whereis libc.so
libc: /usr/share/man/man7/libc.7.gz
Infelizmente, a página man não fornece um número de versão. ldd
ainda é útil, pois qualquer executável vinculado dinamicamente no sistema (por exemplo, quase tudo em /usr/bin
) será vinculado à biblioteca C.
> ldd /usr/bin/touch
/usr/lib/arm-linux-gnueabihf/libcofi_rpi.so (0xb6eed000)
librt.so.1 => /lib/arm-linux-gnueabihf/librt.so.1 (0xb6ed0000)
libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xb6da1000)
/lib/ld-linux-armhf.so.3 (0xb6efb000)
libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0xb6d82000)
libc.so.6
está na terceira linha.
> /lib/arm-linux-gnueabihf/libc.so.6 --version
GNU C Library (Debian EGLIBC 2.13-38+rpi2) stable release version 2.13, by Roland McGrath et al.