gnulib+glib+glibc+libc的不同-转
ZZ: http://blog.sina.com.cn/s/blog_5420e00001016r8r.html
============================================
libc指C函数库,这是一个通称。
GNU
libc就是glibc。glibc
是提供系统调用和基本函数的 C 库,比如open, malloc, printf等等。所有动态链接的程序都要用到它。是GNU开发的C库(GNU
libc)。
glibc2是glibc的version
2(第二版)。
glib是Gtk +库和Gnome的基础。glib可以在多个平台下使用,比如Linux、Unix、Windows等。GLib为许多标准的、常用的C语言结构提供了相应的替代物。GLib是一组较高层的函数库,其中定义了好多有用的数据结构,如单(双)向链表,可变长的数组等,Hash,线程池等有用的东西,在linux中glib是建立在glibc之上的。使用GLib库的程序都应该包含GLib的头文件glib.h。
glib2是glib的第二版。
libstdc++是C++标准I/O库,任何使用GNU的C++编译器G++来编译的C++程序都可以使用libstdc++,它包括了常规的C++例程,比如stl,在linux下,这个库一般放在/usr/lib目录下。
有个错误的观点:认为Glib是GNU的东东.(因为前面那个"g"),而Glibc是Glib的一个子集.
=====================================================================================
这个应该理解成:三者各自适合不同的开发场景;相似的例子:什么时候项目用C开发,什么项目又可以基于JVM用JAVA开发;
1. glibc
[ http://www.gnu.org/s/libc/ ]
任何类unix系统都需要一个C库,功能上包括系统调用与基本C函数。可以理解成实现C函数库一个最基本的库,也就是CRT(C Runtime C运行时库)。不同的平台上都各自有自己的C运行库,windows的包含在VC里;
重点:C语言基本库
2. gnulib
[ http://www.gnu.org/software/gnulib/ ]
GUN组织有一个美好的愿景:只要是遵守GNU POSIX标准开发的软件,可以运行在任何GNU POSIX标准操作系统上。当你需要开发POSIX标准的软件时,你自然先需要这么一个标准库,这就是GNULIB;现实中,各操作系统所提供的开发API甚至C标准函数都不是完全一样的。
重点:POSIX标准
3. glib
[ http://www.gtk.org/ ]
A. 理解GLib的关键在于了解它的历史,简单说来,GLib来自于GTK,GTK源自于GIMP.GIMP是GNU Image Manipulation Program(GNU图像处理程序)的缩写;
B. Glib是什么,有什么?Glib的开发并不与glibc冲突,Glib延伸了C的功能,添加了许多数据结果,添加了一些开发图形系统需要的一些消息处理机制...,它是GIMP组织在实际开发中不断地提炼出来的产物。