什么是 glibc

glibc(GNU C Library)是一个用户空间库,它不是间接位于Linux内核中,而是作为一个独立的软件包存在于Linux零碎中。

Linux内核自身提供了操作系统的外围性能,如过程治理、文件系统、设施驱动等。而glibc是一个用户空间库,为应用程序提供与操作系统的交互接口。它蕴含了规范的C库函数实现,如内存治理、文件操作、网络通信等。

当应用程序须要与操作系统进行交互时,它们会应用glibc提供的函数和接口来调用相应的零碎性能。这些函数和接口封装了与操作系统内核的交互细节,使应用程序可能不便地应用操作系统提供的性能。

所以能够说,glibc是作为Linux零碎的一部分存在的,但它不是内核的一部分。它提供了用户空间的规范C库性能,是应用程序与Linux操作系统之间的重要桥梁。

如何查看 glibc 的版本

要查看Ubuntu 20.04上正在应用的glibc版本,能够应用以下命令:

ldd --version

这个命令将显示ldd工具的版本信息,ldd是用于查看动态链接库依赖关系的工具,它应用零碎上装置的glibc版本。

另外,你还能够应用以下命令来查看glibc的版本号:

strings /lib/x86_64-linux-gnu/libc.so.6 | grep GLIBC_

这个命令将在libc.so.6文件中查找以"GLIBC_"结尾的字符串,其后的字符串示意glibc的版本号。

请留神,这些命令须要在具备适当权限的终端或shell中运行。

如何查看 glibc 的装置门路

要查看glibc(GNU C Library)的装置门路,能够应用以下命令:

ldconfig -p | grep libc.so

这个命令会列出零碎中所有已装置的动态链接库,并通过筛选查找蕴含 "libc.so" 的行,其中就包含glibc的门路。

请留神,为了执行上述命令,你须要具备适当的权限。

libc.so.6 和 libc.so 是什么关系?

libc.so 是一个指向 libc.so.6 的符号链接(symbolic link)。在Linux零碎中,libc.so.6 是GNU C库(glibc)的次要共享对象文件。它蕴含了操作系统所需的规范C库函数和符号,供应用程序调用和链接。

因为libc.so.6 是glibc的版本特定文件,为了确保向后兼容性和降级不便,零碎会创立一个 libc.so 的符号链接,指向以后正在应用的 libc.so.6 文件。这样做能够使旧的应用程序可能持续链接到最新的glibc版本,而不须要批改其链接门路。

因而,libc.solibc.so.6 在性能上是等价的,它们代表了同一个共享对象文件(glibc)。应用程序能够应用其中任何一个来链接到零碎的规范C库。libc.so 作为一个通用的符号链接,能够用于向后兼容和简化链接的过程。而 libc.so.6 是理论的共享对象文件,蕴含了glibc的具体实现和性能。

须要留神的是,不同的Linux发行版和版本可能会在文件门路和命名方面略有不同,然而 libc.solibc.so.6 的关系原理是雷同的。

glibc 版本和 linux 发行版本的对应关系

下表是支流Linux发行版Ubuntu/CentOS/Debian零碎默认的glic版本

UbuntuDebianCentOSGlibc
22.04--2.34
20.0411-2.31
-1082.28
18.04--2.27
-9-2.24
16.04--2.23
14.048-2.19
13.04-72.17
12.04--2.15
-7-2.13
--62.12

参考:https://blog.lmshao.com/linux-glibc-version.html