【glibc 和 libc】
glibc 和 libc 都是 Linux 下的 C 函数库。
GNU C 函数库是一种类似于第三方插件的东西。由于 Linux 是用 C 语言写的,所以 Linux 的一些操作是用 C 语言实现的,因此,GUN 组织开发了一个 C 语言的库 以便让我们更好的利用 C 语言开发基于 Linux 操作系统的程序。 不过现在的不同的 Linux 的发行版本对这两个函数库有不同的处理方法,有的可能已经集成在同一个库里了。
glibc 和 libc 都是 Linux 下的 C 函数库。
libc 是 Linux 下的 ANSI C 函数库;glibc 是 Linux 下的 GUN C 函数库。
【glibc 和 glib】
错误观点:glib 前面有个 "g" ,所以认为 glib 是 GNU 的东东;同时认为 glibc 是 glib 的一个子集。
其实,glib 和 glibc 基本上没有太大联系,可能唯一的共同点就是,其都是 C 编程需要调用的库而已。
glib 是 Gtk+ 库和 Gnome 的基础。glib 可以在多个平台下使用,比如 Linux、Unix、Windows 等。glib 为许多标准的、常用的 C 语言结构提供了相应的替代物。
libc 实际上是一个泛指。凡是符合实现了 C 标准规定的内容,都是一种 libc 。
glibc 是 GNU 组织对 libc 的一种实现。它是 unix/linux 的根基之一。
微软也有自己的 libc 实现,叫 msvcrt 。
嵌入式行业里还常用 uClibc ,是一个迷你版的 libc 。
ANSI C 和 GNU C 有什么区别呢?
ANSI C 函数库是基本的 C 语言函数库,包含了 C 语言最基本的库函数。这个库可以根据头文件划分为 15 个部分,其中包括:
- <ctype.h>:包含用来测试某个特征字符的函数的函数原型,以及用来转换大小写字母的函数原型;
- <errno.h>:定义用来报告错误条件的宏;
- <float.h>:包含系统的浮点数大小限制;
- <math.h>:包含数学库函数的函数原型;
- <stddef.h>:包含执行某些计算 C 所用的常见的函数定义;
- <stdio.h>:包含标准输入输出库函数的函数原型,以及他们所用的信息;
- <stdlib.h>:包含数字转换到文本,以及文本转换到数字的函数原型,还有内存分配、随机数字以及其他实用函数的函数原型;
- <string.h>:包含字符串处理函数的函数原型;
- <time.h>:包含时间和日期操作的函数原型和类型;
- <stdarg.h>:包含函数原型和宏,用于处理未知数值和类型的函数的参数列表;
- <signal.h>:包含函数原型和宏,用于处理程序执行期间可能出现的各种条件;
- <setjmp.h>:包含可以绕过一般函数调用并返回序列的函数的原型,即非局部跳转;
- <locale.h>:包含函数原型和其他信息,使程序可以针对所运行的地区进行修改。
- 地区的表示方法可以使计算机系统处理不同的数据表达约定,如全世界的日期、时间、美元数和大数字;
- <assert.h>:包含宏和信息,用于进行诊断,帮助程序调试。
GNU C 函数库是一种类似于第三方插件的东西。由于 Linux 是用 C 语言写的,所以 Linux 的一些操作是用 C 语言实现的,因此,GUN 组织开发了一个 C 语言的库 以便让我们更好的利用 C 语言开发基于 Linux 操作系统的程序。 不过现在的不同的 Linux 的发行版本对这两个函数库有不同的处理方法,有的可能已经集成在同一个库里了。