1ldd--version
最简单直接的方式
ldd --version
其输出如下:
2通过libc.so获取版本号
GLIBC库早已为了我们考虑到这点了,因而从libc.so我们可以获取到版本信息.
2.1首先查找到libc库的位置
关于怎样找到GLIBC库,有多种方式
ldd一个当前系统中C库编撰的动态可执行程序
ldd `which top` | grep "libc.so"
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f6e32226000)
原理同2linux下查看jboss版本,只不过是从正在运行的程序的动态库中获取
当前进程shell通常是一个C库的程序,lsof查看它运行时加载的libc库是那个
lsof -p $$ 2>&1 | grep "libc-"
通过gcc获取到libc库的位置
catgcc-print-file-name=libc.so
2.2从libc库上获取版本号直接看libc.so的后缀版本号
很显著,libc-2.27.so后缀为2.27,因而GLIBC版本号为2.27
直接运行libc.so
GLIBC的动态库是可以执行运行的linux find,运行将显示版本号以及版权信息,可以看见版本号也是2.27
同2,获取版本号
GLIBC库加上--version同样显示版本号,我们可以看见复印的信息和直接运行的信息是一致的.
3GNU_LIBC_VERSION
标记GLIBC版本号的变量为GNU_LIBC_VERSION,直接查看它即可
getconf GNU_LIBC_VERSION
注意我们还有另外一个变量,也可以类似的获取到GLIBCPTHREAD版本号,GNU_LIBPTHREAD_VERSION,不过多数情况下,他与GLIBC版本号是一致的.
getconf GNU_LIBPTHREAD_VERSION
在Linux上实现pThreads的NPTL项目是一个单独的项目linux cp,最初添加内核支持并提供自己的库.当它足够稳定时,还会合并为glibc.
我们发行版通常使用的GLIBC都是stable版本,因而我觉得这两个版本在所有合理的最新安装上都是相同的.
4gnu_get_libc_version
GLIBC中外置了一些信息标记版本号,拿来在程序中可以获取到GLIBC的版本号.这是一个字符串linux下查看jboss版本,由于一些中级的特点是GLIBC高版本才支持的,因而用户的程序可能常常要看版本号来执行不同的操作和处理.
gnu_get_libc_version和gnu_get_libc_release就是这样的外置信息,我们可以通过man指南来获取详尽信息.
// cat get_glibc_version.c
#include
#include
#include
int main(int argc, char *argv[])
{
printf("GNU libc version: %sn", gnu_get_libc_version());
printf("GNU libc release: %sn", gnu_get_libc_release());
return EXIT_SUCCESS;
}
5查看发行版安装的软件包版本
发行版打包的软件包通常都是有版本号后缀的,因而查看我们发行版安装的GLIBC包的名子,就可以晓得版本号.
例如Ubuntu可以使用dpkg-l查看安装的软件版本
同样Centos也可以使用rpm-qglibc查看对应软件包的名称及版本.
6参考资料
Linux:Checktheglibcversion