在Ubuntu中应该使用libc还是glibc?

9

我对这些库有点困惑。我现在正在使用Ubuntu,使用g++5编译我的应用程序时,我看到它链接了libc.so。这是Ubuntu的C标准库实现吗?它与glibc不同吗?

$ ldd application.exe
...
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6
...
2个回答

13

当前的Ubuntu使用glibc作为C标准库的实现。源代码包名为glibc,但由于历史原因,安装的二进制包名为libc6。如果您运行以下命令,可以查看系统上libc6包的确切版本:

dpkg -l libc6

曾经有一个glibc的临时分支叫做eglibc,但是eglibc的开发已经被放弃;在此之前,所有活跃的eglibc特定端口都已合并到glibc中。

Ubuntu还有针对其他libc实现的软件包,例如musl,但是该发行版本身不使用它们,因为它是基于glibc的。


9

Libc是C编程语言的标准库名称。Glibc是libc的许多不同实现之一。特别地,Glibc是作为GNU项目的一部分开发和维护的libc实现。

Glibc是libc的许多不同实现之一。其他一些知名的实现包括Microsoft Visual C Runtime(其中包括一个libc),musl,dietlibc,µClibc,各种BSD libc以及Google Bionic(与Android一起提供的libc)。


1
非常感谢!我如何确定Ubuntu使用哪个实现? - Alexey
除非您使用非常专业的Linux发行版,否则您正在使用Glibc。 - Jörg W Mittag
我可以向您保证,glibc仍然是GNU项目的重要组成部分。您为什么会有不同的看法呢? - Florian Weimer
我对Linux、Ubuntu等操作系统很陌生,我只是想知道我所使用的libc、libm实现版本,以便查找正确的文档。 - Alexey
@FlorianWeimer:我记得 Ulrich Drepper 大约 15-20 年前说过类似的话。我认识你的名字,所以我会自然地顺从你的专业知识。 - Jörg W Mittag

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接