glibc:GNU C 语言函数库(glibc, http://www.gnu.org/software/libc/)是 Linux 上最常用的实现。
确定它的版本号方式如下:

1.直接运行它就可以看到版本号:

某些版本不在此路径,我们可以根据某个链接共享库glibc的程序通过ldd(列出动态依赖关系)去确定。比如gcc,我们可以先查找gcc的位置(whereis gcc 或者which gcc),一般在/usr/bin/gcc,然后ldd /usr/bin/gcc查看。或者自己的一个执行程序
Linux-glibc

2.常量测试:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include</usr/include/x86_64-linux-gnu/gnu/libc-version.h>

int main(int argc,char *argv[]){
	printf("%d %d\n",__GLIBC__,__GLIBC_MINOR__);
	return 0;
}

Linux-glibc

3.函数测试:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include</usr/include/x86_64-linux-gnu/gnu/libc-version.h>

int main(int argc,char *argv[]){
	printf("%s\n",gnu_get_libc_version());//puts(gnu_get_libc_version());
	return 0;
}

Linux-glibc

4.命令测试:getconf GNU_LIBC_VERSION

Linux-glibc

5.利用confstr测试:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include</usr/include/x86_64-linux-gnu/gnu/libc-version.h>

int main(int argc,char *argv[]){
	char *pathbuf;char *gnu_libthread_version_buf;char *gnu_libc_version_buf;
	size_t n;
	n=confstr(_CS_PATH,NULL,(size_t)0);
	pathbuf=malloc(n);
	if(pathbuf==NULL)
		abort();
	confstr(_CS_PATH,pathbuf,n);
	printf("%s\n",pathbuf);
	
	n=confstr(_CS_GNU_LIBC_VERSION,NULL,(size_t)0);
	gnu_libc_version_buf=malloc(n);
	if(gnu_libc_version_buf==NULL)
		abort();
	confstr(_CS_GNU_LIBC_VERSION,gnu_libc_version_buf,n);
	printf("%s\n",gnu_libc_version_buf);//库版本
	
	n=confstr(_CS_GNU_LIBPTHREAD_VERSION,NULL,(size_t)0);
	gnu_libthread_version_buf=malloc(n);
	if(gnu_libthread_version_buf==NULL)
		abort();
	confstr(_CS_GNU_LIBPTHREAD_VERSION,gnu_libthread_version_buf,n);
	printf("%s\n",gnu_libthread_version_buf);
	return 0;
}

Linux-glibc

相关文章: