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查看。或者自己的一个执行程序
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;
}
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;
}
4.命令测试:getconf GNU_LIBC_VERSION
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;
}