答案 0 :(得分:42)
glibc
是核心C运行时库。它提供了printf(3)
和fopen(3)
等内容。
glib
是一个用C语言编写的基于对象的事件循环和实用程序库。
gnulib
是一个库,它提供从POSIX API到本机API的适配器。
这三个用于完全不同的任务。
答案 1 :(得分:2)
glibc 是 GNU C库的缩写,是GNU工程对C standard library的实现。 C标准库的API在<stdio.h>
和<stdlib.h>
之类的熟悉的头文件中声明(有关头文件的完整列表,请参见Wikipedia链接)。
POSIX操作系统API通过<unistd.h>
提供,它主要包装fork
之类的系统调用和read
/ write
之类的I / O操作。
GLib 是由GNOME(GNU工程的一部分)开发的用C编写的系统库的捆绑包。引自维基百科(不幸的是没有来源)
GLib提供高级数据结构,例如内存块,双链表和单链表,哈希表,动态字符串和字符串实用程序(例如词法扫描器),字符串块(字符串组),动态数组,平衡二进制树, N元树,夸克(字符串和唯一整数标识符的双向关联),键控数据列表,关系和元组。缓存提供内存管理。
GLib实现了提供线程,线程编程和相关功能的功能,例如原始变量访问,互斥锁,异步队列,安全内存池,消息传递和日志记录,挂钩函数(回调注册)和计时器。 GLib还包括消息传递功能,例如字节顺序转换和I / O通道。
GLib的其他一些功能包括:
- 标准宏
- 警告和断言
- 模块的动态加载
Gnulib ,也称为 GNU可移植性库,是GNU代码的集合,可帮助编写可移植代码。来自the manual:
Gnulib旨在成为GNU项目的大多数重要“可移植性”和/或通用文件的规范来源。这些是旨在在源级别共享的文件。 Gnulib不是要安装和链接的典型库。因此,与大多数项目不同,Gnulib通常不会生成源压缩包。相反,开发人员直接从源存储库中获取模块。
许多功能实现portability workarounds for ISO C and POSIX functions。