什么是 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


universe_king
3.4k 声望680 粉丝