我对这些库有点困惑。我现在正在使用Ubuntu,使用g++5编译我的应用程序时,我看到它链接了libc.so。这是Ubuntu的C标准库实现吗?它与glibc不同吗?
$ ldd application.exe
...
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6
...
当前的Ubuntu使用glibc作为C标准库的实现。源代码包名为glibc
,但由于历史原因,安装的二进制包名为libc6
。如果您运行以下命令,可以查看系统上libc6
包的确切版本:
dpkg -l libc6
曾经有一个glibc的临时分支叫做eglibc,但是eglibc的开发已经被放弃;在此之前,所有活跃的eglibc特定端口都已合并到glibc中。
Ubuntu还有针对其他libc实现的软件包,例如musl,但是该发行版本身不使用它们,因为它是基于glibc的。
Libc是C编程语言的标准库名称。Glibc是libc的许多不同实现之一。特别地,Glibc是作为GNU项目的一部分开发和维护的libc实现。
Glibc是libc的许多不同实现之一。其他一些知名的实现包括Microsoft Visual C Runtime(其中包括一个libc),musl,dietlibc,µClibc,各种BSD libc以及Google Bionic(与Android一起提供的libc)。