常见的Linux下面的库很多,
libc, glibc; glib, gdk, gtk, 太多了。但是这些库是有层次关系的.
libc 是 Linux 下的 ANSI C 函数库;glibc 是 Linux 下的 GUN C 函数库。
glibc是linux下面c标准库的实现,即GNU C Library。glibc本身是GNU旗下的C标准库,后来逐渐成为了Linux的标准c库,而Linux下原来的标准c库Linux libc逐渐不再被维护。Linux下面的标准c库不仅有这一个,如uclibc、klibc,以及上面被提到的Linux libc,但是glibc无疑是用得最多的。glibc在/lib目录下的.so文件为libc.so.6。
Notice: glibc和glib是不同的,其实,glib 和 glibc 基本上没有太大联系,可能唯一的共同点就是,其都是 C 编程需要调用的库而已。
glib 是 Gtk+ 库和 Gnome 的基础。glib 可以在多个平台下使用,比如 Linux、Unix、Windows 等。glib 为许多标准的、常用的 C 语言结构提供了相应的替代物。
简单来说:
xlib: The X Library是X Window程式最低階的API,如果拿來和Windows 比較起來,Xlib 就和Windows APIs(或稱 Windows SDK)一樣,算是最接近 X Server的程序設计介面,它只提供最基本的绘图和訊息事件的處理。
glib: Linux下C的一个实用程序库,包括可移植性和一些实用程序功能,以及一些容器类,例如:链表,可变数组,变长字符串,HASH西表),缓存,一个事件循环和其他有用的结构。glib是用C写的一些utilities,即C的工具库,和libc/glibc没有关系。
gdk: 简单的对Xlib函数库进行了包装,只有在我们进行特殊绘画或设置窗口的特殊属性的时候才会用到它.
gtk: 它是GTK+库的一部分。这个库提供了基本的工具包和widget来创建GUI应用程序。大多数GUI是直接用GTK编写的。GTK同时为Gnome库提供了一个功能强大的对象系统。
分割线下面均为转载:
1. 地址:http://socol.iteye.com/blog/579718
GNOME (GNU Network Object Model Environment)是以GTK為基礎的圖形介面函式庫。和KDE一樣,GNOME 也是以建立一個完整、友善的圖形使用環境為目標,並提供GNOME相關的軟體。
Gnome库在最高层,包括帮助例程,类和特殊的widget,并为应用程序提供一个基础架构。
第二层是GTK,它是GTK+库的一部分。这个库提供了基本的工具包和widget来创建GUI应用程序。大多数GUI是直接用GTK编写的。GTK同时为Gnome库提供了一个功能强大的对象系统。
再下一层是GDK,它简单的对X函数库进行了包装,只有在我们进行特殊绘画或设置窗口的特殊属性的时候才会用到它.
最下面一层是Glib,它是C的一个实用程序库,包括可移植性和一些实用程序功能,以及一些容器类,例如:链表,可变数组,变长字符串,HASH西表),缓存,一个事件循环和其他有用的结构。
2. 地址:http://blog.csdn.net/yasi_xi/article/details/9899599
【glibc 和 libc】
glibc 和 libc 都是 Linux 下的 C 函数库。
libc 是 Linux 下的 ANSI C 函数库;glibc 是 Linux 下的 GUN C 函数库。
ANSI C 和 GNU C 有什么区别呢?
ANSI C 函数库是基本的 C 语言函数库,包含了 C 语言最基本的库函数。这个库可以根据头文件划分为 15 个部分,其中包括:
glibc是linux下面c标准库的实现,即GNU C Library。glibc本身是GNU旗下的C标准库,后来逐渐成为了Linux的标准c库,而Linux下原来的标准c库Linux libc逐渐不再被维护。Linux下面的标准c库不仅有这一个,如uclibc、klibc,以及上面被提到的Linux libc,但是glibc无疑是用得最多的。glibc在/lib目录下的.so文件为libc.so.6。
01 |
[root@Betty ~] # /lib/libc.so.6 |
02 |
GNU C Library stable release version 2.5, by Roland McGrath et al. |
03 |
Copyright (C) 2006 Free Software Foundation, Inc. |
04 |
This is free software; see the source for copying conditions. |
05 |
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A |
06 |
PARTICULAR PURPOSE. |
07 |
Compiled by GNU CC version 4.1.2 20080704 (Red Hat 4.1.2-52). |
08 |
Compiled on a Linux 2.6.9 system on 2013-01-08. |
09 |
Available extensions: |
10 |
The C stubs add-on version 2.1.2. |
11 |
crypt add-on version 2.1 by Michael Glad and others |
12 |
GNU Libidn by Simon Josefsson |
13 |
GNU libio by Per Bothner |
14 |
NIS(YP)/NIS+ NSS modules 0.19 by Thorsten Kukuk |
15 |
Native POSIX Threads Library by Ulrich Drepper et al |
16 |
BIND-8.2.3-T5B |
17 |
RT using linux kernel aio |
18 |
Thread- local storage support included. |
19 |
For bug reporting instructions, please see: |
20 |
<http://www.gnu.org/software/libc/bugs.html>. |
21 |
[root@Betty ~] # |
1 |
[root@Betty ~] # ldd --version |
2 |
ldd (GNU libc) 2.5 |
3 |
Copyright (C) 2006 Free Software Foundation, Inc. |
4 |
This is free software; see the source for copying conditions. There is NO |
5 |
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
6 |
Written by Roland McGrath and Ulrich Drepper. |
7 |
[root@Betty ~] # |
glib是GTK+的基础库,它由基础类型、对核心应用的支持、实用功能、数据类型和对象系统五个部分组成,可以在[http://www.gtk.org gtk网站]下载其源代码。是一个综合用途的实用的轻量级的C程序库,它提供C语言的常用的数据结构的定义、相关的处理函数,有趣而实用的宏,可移植的封装和一些运行时机能,如事件循环、线程、动态调用、对象系统等的API。GTK+是可移植的,当然glib也是可移植的,你可以在linux下,也可以在windows下使用它。使用gLib2.0(glib的2.0版本)编写的应用程序,在编译时应该在编译命令中加入pkg-config --cflags --libs glib-2.0
,如:
gcc
pkg-config --cflags --libs glib-2.0
hello.c -o hello
使用glib最有名的就是GNOME了。
Glib
GLib is a general-purpose utility library, which provides many useful data types, macros, type conversions, string utilities, file utilities, a main loop abstraction, and so on. It works on many UNIX-like platforms, Windows, OS/2 and BeOS. GLib is released under the GNU Library General Public License (GNU LGPL).
The general policy of GLib is that all functions are invisibly threadsafe with the exception of data structure manipulation functions, where, if you have two threads manipulating the same data structure, they must use a lock to synchronize their operation.
GLib is the low-level core library that forms the basis for projects such as GTK+ and GNOME. It provides data structure handling for C, portability wrappers, and interfaces for such runtime functionality as an event loop, threads, dynamic loading, and an object system.
Overview:
Any Unix-like operating system needs a C library: the library which defines the ``system calls'' and other basic facilities such as open, malloc, printf, exit...
The GNU C Library is used as the C library in the GNU systems and most systems with the Linux kernel.
Project Goals:
The GNU C Library is primarily designed to be a portable and high performance C library. It follows all relevant standards including ISO C11 and POSIX.1-2008. It is also internationalized and has one of the most complete internationalization interfaces known.
History:
The history of Unix and various standards determine much of the interface of the C library. In general the GNU C Library supports the ISO C and POSIX standards. We also try to support the features of popular Unix variants (including BSD and System V) when those do not conflict with the standards. Different compatibility modes (selectable when you compile an application) allow the peaceful coexistence of compatibility support for different varieties of Unix.
libc 实际上是一个泛指。凡是符合实现了 C 标准规定的内容,都是一种 libc 。
glibc 是 GNU 组织对 libc 的一种实现。它是 unix/linux 的根基之一。
微软也有自己的 libc 实现,叫 msvcrt 。
嵌入式行业里还常用 uClibc ,是一个迷你版的 libc 。
libc, glibc在一个层次,都是C的标准实现库,是操作系统级别的基石之一。
glib是用C写的一些utilities,即C的工具库,和libc/glibc没有关系。