《Linux/UNIX系统编程手册》 阅读笔记-1 确定系统的glibc版本

在《Linux/UNIX系统编程手册》3.3节中讲到如何确定系统glibc版本,记录一下。

  glibc是GNU发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。由于 glibc 囊括了几乎所有的 UNIX 通行的标准,可以想见其内容包罗万象。而就像其他的 UNIX 系统一样,其内含的档案群分散于系统的树状目录结构中,像一个支架一般撑起整个操作系统。在 GNU/Linux 系统中,其C函式库发展史点出了GNU/Linux 演进的几个重要里程碑,用 glibc 作为系统的C函式库,是GNU/Linux演进的一个重要里程碑。
那么如何确定系统的glibc版本呢?

  1. 方法一
    在shell中直接运行glibc共享库文件(将其视为可执行文件)来获取glibc版本号。

    [yangxjsun@CentOS7 exp]$ /lib64/libc.so.6
    

    1-1.png
    在输出的信息中第一行可以看到glibc的版本号为2.17.
    glibc的路径名取决于Linux版本和处理器架构。

    在基于Debian的64位系统上:

    /lib/x86_64-linux-gnu/libc.so.6
    

    在基于Debian的32位系统上:

    /lib/i386-linux-gnu/libc.so.6
    

    在基于Red Hat的64位系统上:

    /lib64/libc.so.6
    

    在基于Red Hat的32位系统上:

    /lib/libc.so.6
    

    以上仅供参考,确定glibc库所在位置的方法之一是:针对某个与glibc动态链接的可执行文件(大多数可执行文件都采取这种链接方式),运行ldd(列出动态依赖性)程序。检查输出的库依赖性列表,便能发现glibc共享库的位置。具体可以这么做:

    [yangxjsun@CentOS7 exp]$ vim a.c
    [yangxjsun@CentOS7 exp]$ gcc -o a a.c 
    [yangxjsun@CentOS7 exp]$ ldd a |grep libc
        libc.so.6 => /lib64/libc.so.6 (0x00007fc2b5339000)
    [yangxjsun@CentOS7 exp]$ 
    

    a.c的内容简单写一下,比如
    1-2.png
    从ldd命令执行的输出结果即可看到glibc的位置。

  2. 方法二
    查看ldd的版本号来确定glibc的版本号:

    [yangxjsun@CentOS7 exp]$ ldd --version
    

    1-3.png

  3. 方法三
    编译运行下面的小程序,执行输出glibc的版本号
    1-4.png

    [yangxjsun@CentOS7 exp]$ gcc -o glibcV glibcV.c 
    [yangxjsun@CentOS7 exp]$ ./glibcV 
    2.17
    

    PS:还可以使用confstr()函数来获取(glibc特有的)_CS_GNU_LIBC_VERSION配置变量的值。这一调用会返回类似于“glibc 2.17”的字符串。

参考链接:
http://www.maixj.net/ict/glibc-v-15561
http://www.only2fire.com/archives/767.html
在此表示感谢,也留作以后继续学习。
注:转载请注明出处:)

猜你喜欢

转载自blog.csdn.net/yangxjsun/article/details/79244202