【整理】libc、glibc和glib的关系

【glibc 和 libc】 

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

ANSI C 和 GNU C 有什么区别呢? 

       ANSI C 函数库是基本的 C 语言函数库,包含了 C 语言最基本的库函数。这个库可以根据头文件划分为 15 个部分,其中包括: 

  1. <ctype.h>:包含用来测试某个特征字符的函数的函数原型,以及用来转换大小写字母的函数原型;
  2. <errno.h>:定义用来报告错误条件的宏;
  3. <float.h>:包含系统的浮点数大小限制;
  4. <math.h>:包含数学库函数的函数原型;
  5. <stddef.h>:包含执行某些计算 C 所用的常见的函数定义;
  6. <stdio.h>:包含标准输入输出库函数的函数原型,以及他们所用的信息;
  7. <stdlib.h>:包含数字转换到文本,以及文本转换到数字的函数原型,还有内存分配、随机数字以及其他实用函数的函数原型;
  8. <string.h>:包含字符串处理函数的函数原型;
  9. <time.h>:包含时间和日期操作的函数原型和类型;
  10. <stdarg.h>:包含函数原型和宏,用于处理未知数值和类型的函数的参数列表;
  11. <signal.h>:包含函数原型和宏,用于处理程序执行期间可能出现的各种条件;
  12. <setjmp.h>:包含可以绕过一般函数调用并返回序列的函数的原型,即非局部跳转;
  13. <locale.h>:包含函数原型和其他信息,使程序可以针对所运行的地区进行修改。
  14. 地区的表示方法可以使计算机系统处理不同的数据表达约定,如全世界的日期、时间、美元数和大数字;
  15. <assert.h>:包含宏和信息,用于进行诊断,帮助程序调试。

上述库函数在其各种支持 C 语言的 IDE 中都是有的。 

       GNU C 函数库是一种类似于第三方插件的东西。由于 Linux 是用 C 语言写的,所以 Linux 的一些操作是用 C 语言实现的,因此,GUN 组织开发了一个 C 语言的库 以便让我们更好的利用 C 语言开发基于 Linux 操作系统的程序。 不过现在的不同的 Linux 的发行版本对这两个函数库有不同的处理方法,有的可能已经集成在同一个库里了。 

查看当前系统的 glibc 版本的方法: 
1.

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

[root@Betty ~]# /lib/libc.so.6

GNU C Library stable release version 2.5, by Roland McGrath et al.

Copyright (C) 2006 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.

Compiled by GNU CC version 4.1.2 20080704 (Red Hat 4.1.2-52).

Compiled on a Linux 2.6.9 system on 2013-01-08.

Available extensions:

        The C stubs add-on version 2.1.2.

        crypt add-on version 2.1 by Michael Glad and others

        GNU Libidn by Simon Josefsson

        GNU libio by Per Bothner

        NIS(YP)/NIS+ NSS modules 0.19 by Thorsten Kukuk

        Native POSIX Threads Library by Ulrich Drepper et al

        BIND-8.2.3-T5B

        RT using linux kernel aio

Thread-local storage support included.

For bug reporting instructions, please see:

<http://www.gnu.org/software/libc/bugs.html>.

[root@Betty ~]#

2. 

?


1

2

3

4

5

6

7

[root@Betty ~]# ldd  --version

ldd (GNU libc) 2.5

Copyright (C) 2006 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.

[root@Betty ~]#

【glibc 和 glib】 

      错误观点:glib 前面有个 "g" ,所以认为 glib 是 GNU 的东东;同时认为 glibc 是 glib 的一个子集。 

      其实,glib 和 glibc 基本上没有太大联系,可能唯一的共同点就是,其都是 C 编程需要调用的库而已。 
glib 是 Gtk+ 库和 Gnome 的基础。glib 可以在多个平台下使用,比如 Linux、Unix、Windows 等。glib 为许多标准的、常用的 C 语言结构提供了相应的替代物。 

【官方说明】

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. 

Glibc 

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 。

时间: 2024-10-21 13:33:37

【整理】libc、glibc和glib的关系的相关文章

RabbitMq的整理 exchange、route、queue关系

http://blog.csdn.net/samxx8/article/details/47417133 从AMQP协议可以看出,MessageQueue.Exchange和Binding构成了AMQP协议的核心,下面我们就围绕这三个主要组件    从应用使用的角度全面的介绍如何利用Rabbit MQ构建消息队列以及使用过程中的注意事项.     1. 声明MessageQueue       在Rabbit MQ中,无论是生产者发送消息还是消费者接受消息,都首先需要声明一个MessageQue

【资料整理】VC和VS的关系以及_MSC_VER值

Microsoft Visual C++,(简称Visual C++.MSVC++或MSVC.VC++或VC)微软公司的C++开发工具,具有集成开发环境,可提供编辑C语言,C++以及C++/CLI等编程语言.VC++集成了便利的除错工具,特别是集成了微软视窗程序设计(Windows API).三维动画DirectX API,Microsoft .NET框架.目前最新的版本是Microsoft Visual C++ 2011 beta. Visual Studio 是微软公司推出的开发环境,Vis

设计从整理开始

整理,一个似乎和设计关系不大的行为,与设计师的创新精神相比,她总给人较为消极的印象.而且很多设计师也认为,整理纯粹是体力劳动的事情,设计则是与之相反需依靠脑力完成的创意工作. 事实绝非如此,通过整理,我们能找到事物的本质,发现全新的观点,看到一些深藏于表面的事物.通过整理,我们视野里问题会变得越来越清晰,并且获得许多积极地发现. 回到我的现实工作中来,交互设计从来都不是从零开始的,只有在认清用户最终目的,应用根本任务的基础上,才能找到问题的关键点,切中要害进行方案的设计创新. 以前我也对整理有些

如何写标题描述关键词整理的东西分享给大家

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;   今天整理这篇文章有点晚.每天整理好了笔记还是没有用.因为笔记只是记录的重点.如果同样的事情那么也许只有当时记得.但是过后了.自己什么也没有得到.还是一句老话.你笔记写的在好. 只能够说明你上课认真.但是到最后你得到了什么呢?如果不去用不去试也许什么也没有得到.上一节课整理的SEO与域名的关系整理的不是很好.因为也是第一次写这样子的文章.中国SEO论坛老郭今天上的

MySQL中文参考手册5(安装MySQL上)

mysql|参考|参考手册|中文 MySQL中文参考手册5(安装MySQL上)转载 译者:晏子 [返回][转发] 译者:晏子 (clyan@sohu.com)主页:http://linuxdb.yeah.net4 安装MySQL本章描述怎样获得并安装MySQL:  对于你能从其获得MySQL的站点列表,见4.1 怎样获得MySQL. 要了解支持哪些平台,见4.2 MySQL支持的操作系统. 可获得MySQL的多个版本,以二进制代码和源代码形式分发.为了确定你应该使用的分发的版本和类型,见4.4 

交互设计理论研究:找到关键点进行方案的设计创新

整理,一个似乎和设计关系不大的行为,与设计师的创新精神相比,她总给人较为消极的印象.而且很多设计师也认为,整理纯粹是体力劳动的事情,设计则是与之相反需依靠脑力完成的创意工作. 事实绝非如此,通过整理,我们能找到事物的本质,发现全新的观点,看到一些深藏于表面的事物.通过整理,我们视野里问题会变得越来越清晰,并且获得许多积极地发现. 回到我的现实工作中来,交互设计从来都不是从零开始的,只有在认清用户最终目的,应用根本任务的基础上,才能找到问题的关键点,切中要害进行方案的设计创新. 以前我也对整理有些

概要设计、详细设计:概念、方法、实践步骤

完整软件开发流程: 需求分析.概要设计.详细设计 一 1.  概念.方法.实践步骤 设计是指根据需求开发的结果,对产品的技术实现由粗到细进行设计的过程.根据设计粒度和目的的不同可以将设计分为概要设计.详细设计等阶段以便于管理和确保质量.设计内容也要根据软件系统的实际情况进行定义,比如对于交互性要求高的系统可以有视觉设计等等. 一般来说可以将设计阶段划分为概要设计.详细设计2阶段进行管理,程序设计可以结合项目管理.作业配分.开发团队的能力以及质量要求等因素来决定是否作为单独的阶段进行管理. n  

如何让程序员更容易的开发Web界面?重构SmartAdmin展示TinyUI框架

序言 如何让程序员更容易的开发Web界面,是一个持久的话题,所有的从事相关开发的公司都会碰到这个问题,并且被这个问题所深深困扰. Tiny框架也不得不直视这个问题,确实来说,想解决这个问题,也是非常有难度与深度的,业界也有各种各样的尝试,这也是有各种各样不同框架出现的原因. Tiny框架构建者认为,完全采用一种框架解决所有问题,是不现实的.而且即使目前找得到一种非常好的框架,暂时可以满足应用需要,但是随着技术的发展,业务的进化,就会慢慢变得不再满足业务需要.因此,Tiny框架构建从不再把做一套U

纯粹的 K12 精髓:从马列主义角度分析如何教孩子看图写话

纯粹的 K12 精髓:从马列主义角度分析如何教孩子看图写话 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 摘自百度百科<辩证唯物主义> 孩子对事物的认识,也是遵从这个过程的. 第一