GNU C函式庫

GNU C库，又名glibc，是GNU计划所实现的C标准库。尽管其名字中带有“C库”，但它现在也直接支持C++（以及间接支持其他编程语言）。它是自由软件基金会（FSF）在20世纪90年代初为他们的GNU操作系统设计的。它为GNU系统，GNU/Linux系统和一些其他的类Unix系统提供了系统核心库。这些库提供了关键的API，包括ISO C11、POSIX.1-2008和BSD所规定的API和一些底层API，包括open、read、write、malloc、printf、getaddrinfo、dlopen、pthread_create、crypt、login、exit等。

glibc在GNU宽通用公共许可证下发布。

历史
glibc项目最初主要由Roland McGrath编写，他在20世纪80年代为自由软件基金会（FSF）工作。

1988年，FSF称glibc已基本实现ANSI C所规定的内容 ；到1992年，它已经实现了ANSI C-1989和POSIX.1-1990所规定的功能，并正在进行关于实现POSIX.2的工作。

1995年9月，Ulrich Drepper为glibc项目做出了他的第一个贡献，并在20世纪90年代逐渐成为glibc的核心贡献者和维护者。 Drepper担任维护员一职多年，直到2012年累计占项目总贡献的63%。

Linux libc
在20世纪90年代初，Linux内核的开发團隊分叉了Glibc，名为“Linux libc”并单独维护。

当FSF在1997年1月发布glibc 2.0时，由于glibc 2.0更符合POSIX标准，内核开发者停止了Linux libc的开发。 glibc 2.0还具有更好的国际化和翻译、IPv6功能、64位数据访问、多线程支持、未来版本的兼容性，而且代码更加可移植。 

最后版本的Linux libc使用的库文件名是libc.so.5。因此，Linux上的glibc 2.x使用的库文件名称为libc.so.6。 （Alpha 和 IA64 平台的glibc使用libc.so.6.1代替）. 这些以.so为后缀的文件通常被缩写为libc6 （例如在Debian的软件包名中），遵循一般库的惯例。

根据Richard Stallman的说法，由于开发者们的身份模糊，FSF无法将Linux libc做出的改动合并到glibc中。GNU项目对版权相关的要求十分严格。

成立委员会
自2001年起，库的开发由 一个监管委员会负责，但保留了Drepper主要贡献者和维护者的身份。委员会的设立被Drepper公然说成是Richard Stallman的阴谋诡计，因而被公共争议所包围。

迁移到git
glibc以前被储存在CVS仓库中，2009年被迁移到Sourceware上的Git仓库。.

委员会解散
2012年3月，委员会投票决定解散，并撤-{}-销Drepper的职务，转而由Ryan Arnold、Maxim Kuvyrkov、Joseph Myers、Carlos O'Donell和Alexandre Oliva负责glibc的维护工作。但是，他们对于glibc没有额外的决策权。

在委员会解散后，Debian和其他使用glibc替代品的项目又迁移回到了glibc。 从2014年开始，EGLIBC不再开发，因为它“现在的目标是在glibc上直接解决问题”。

2017年7月，在glibc创立30年时，Roland McGrath宣布不再直接参与项目，并宣布自己为名誉维护者。“过去这几个月，甚至过去几年，已经证明你们不再需要我了”。

版本历史
对于大多数系统来说，glibc的版本可以通过解析lib文件（例如，/lib/libc.so.6）获得。

功能
glibc实现了单一UNIX规范、POSIX（1c、1d和1j）所要求的功能，并实现了ISO C11、ISO C99、Berkeley Unix（BSD）接口、System V接口定义（SVID）和X/Open Portability Guide（XPG）4.2所要求的部分功能，并提供了所有符合XSI（X/Open System Interface）的系统所共有的扩展以及所有X/Open UNIX扩展。

此外，glibc还提供了在开发GNU时被认为有用或必要的扩展。

受支持的硬件和内核
glibc可以运行在许多不同的内核和不同的硬件架构上。官方支持的硬件架构 包括: 32位ARM，AArch64， C-SKY， DEC Alpha， IA-64， Motorola m68k， MicroBlaze， MIPS， Nios II， PA-RISC， PowerPC， RISC-V， s390， SPARC， 和 x86 （旧版本支持 TILE）。Glibc官方支持Hurd和Linux内核。此外，还有大量打过补丁的版本可以运行在FreeBSD和NetBSD上（因此glibc也相应地支持Debian GNU/kFreeBSD和Debian GNU/NetBSD，因为这些内核与FreeBSD和NetBSD的关联很大），以及OpenSolaris的分支版本。 Glibc的一个修改过的版本也被用在 BeOS 和 Haiku中。

在小型设备中的使用
Glibc在过去因过于臃肿且速度比其他C库较慢，遭到一些开发者们的批评，如Linus Torvalds 和一些嵌入式开发程序员。 出于这个原因，人们创建了几个用于在嵌入式平台替代Glibc的C标准库。这些库较Glibc更小。然而，许多嵌入式开发项目仍使用Glibc，因为它更加符合标准且兼容性更好。例如Openmoko 和由iPaq使用的Familiar Linux（在使用GPE显示软件时）。

相關條目

参考资料

外部链接

 

C標準函式庫
自由跨平台軟體
自由發展元件與函式庫
用C編程的自由軟體
GNU计划软件
Linux内核接口
Linux API