libc、glib、glibc简介
2019-07-21 17:47:56 阿炯

glibc和libc都是Linux下的C函数库:libc是Linux下的ANSI C函数库,glibc是Linux下的GUN C函数库。

glib是用C写的一些工具,即C的工具库,和libc/glibc没有关系。GLib是一个跨平台的、用C语言编写的五个底层库的集合,为GNOME所使用。GLib起初是GTK+的一部分,但到了GTK+第二版,开发者决定把跟图形界面无关的代码分开,这些代码于是就组装成了GLib。因为GLib具有跨平台特性,所以用它编写的程序可以无需进行大的修改就可以在其他程序上编译和运行。它提供了多种高级的数据结构,如内存块、双向和单向链表、哈希表、动态字符串以及字符串工具(例如词法分析器,字符串切分等)、动态数组,平衡二叉树、n-叉树、键值存储、关系和元组,还有带有缓存的内存管理。Glib还实现了线程相关的函数、多线程编程以及相关的工具,例如原始变量访问,互斥锁,异步队列,安全内存池,消息传递和日志,钩子函数和计时器,同时消息传递还包含了字节序转换和IO channel。

GLib由五个库组成:
GObject –对象系统,包括类型系统GType
Glib
GModule
GThread
GIO


glibc是linux下面c标准库的实现,即GNU C Library。glibc本身是GNU旗下的C标准库,后来逐渐成为了Linux的标准C库,而Linux下原来的标准C库Linux libc逐渐不再被维护

GNU C库(英语:GNU C Library,常简称为glibc)是一种按照LGPL许可协议发布的,自由的,公开源代码的,方便从网络下载的C的编译程序。GNU C运行期库,是一种C函数库,是程序运行时使用到的一些API集合,它们一般是已预先编译好,以二进制代码形式存在Linux类系统中,GNU C运行期库通常作为GNU C编译程序的一个部分发布。Glibc最初是自由软件基金会(FSF)为其GNU操作系统所写,但当前最主要的应用是配合Linux内核,成为GNU/Linux操作系统一个重要的组成部分。

glibc在/lib(64)目录下的.so文件为libc.so.6。

查看当前系统的glibc版本的两种方法:
# ls -lh /lib64/libc.so.6
lrwxrwxrwx 1 root root 12 11月 17  2015 /lib64/libc.so.6 -> libc-2.22.so

# ldd --version
ldd (GNU libc) 2.22
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.

这两种方法都可以看到当前系统的glibc的版本是2.22。