什么是 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.so
和 libc.so.6
在性能上是等价的,它们代表了同一个共享对象文件(glibc)。应用程序能够应用其中任何一个来链接到零碎的规范 C 库。libc.so
作为一个通用的符号链接,能够用于向后兼容和简化链接的过程。而 libc.so.6
是理论的共享对象文件,蕴含了 glibc 的具体实现和性能。
须要留神的是,不同的 Linux 发行版和版本可能会在文件门路和命名方面略有不同,然而 libc.so
和 libc.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