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