乐趣区

关于linux:linux-和-glibc-浅谈

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

Ubuntu Debian CentOS Glibc
22.04 2.34
20.04 11 2.31
10 8 2.28
18.04 2.27
9 2.24
16.04 2.23
14.04 8 2.19
13.04 7 2.17
12.04 2.15
7 2.13
6 2.12

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

退出移动版