【发布时间】:2019-05-31 20:39:12
【问题描述】:
我对这些库有点困惑。我现在在 Ubuntu 上工作,我使用 g++ 5,我看到我的应用程序链接在 libc.so 中。它是 Ubuntu 对 C 标准库的实现吗?它与 glibc 不同吗?
$ ldd application.exe
...
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6
...
【问题讨论】:
我对这些库有点困惑。我现在在 Ubuntu 上工作,我使用 g++ 5,我看到我的应用程序链接在 libc.so 中。它是 Ubuntu 对 C 标准库的实现吗?它与 glibc 不同吗?
$ ldd application.exe
...
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6
...
【问题讨论】:
Libc 是 C 编程语言的标准库的名称。 Glibc 是 libc 的许多不同实现之一。特别是,Glibc 是作为 GNU 项目的一部分开发和维护的 libc 实现。
Glibc 是许多不同的 libc 实现之一。其他一些著名的实现是 Microsoft Visual C Runtime(包括 libc)、musl、dietlibc、µClibc、各种 BSD libcs 和 Google Bionic(Android 附带的 libc)。
【讨论】:
当前的 Ubuntu 使用 glibc 来实现 C 标准库。源包名为glibc,但由于历史原因,安装的二进制包名为libc6。如果你运行这个命令,你可以在你的系统上看到libc6包的确切版本:
dpkg -l libc6
以前有一个glibc的临时fork叫做eglibc,但是eglibc development has been abandoned;在此之前,所有活动的 eglibc 特定端口都合并到 glibc 中。
Ubuntu 也有用于替代 libc 实现的软件包,例如 musl,但发行版本身不使用它们,因为它是基于 glibc 的。
【讨论】: