glibc是GNU发布的libc库 。即c运行库 。glibc是linux系统中最底层的api 。几乎其它任何运行库都会依赖于glibc 。glibc除了封装linux操作系统所提供的系统服务外 。它本身也提供了许多其它一些必要功能服务的实现 。由于 glibc 囊括了几乎所有的 UNIX 通行的标准 。可以想见其内容包罗万象 。而就像其他的 UNIX 系统一样 。其内含的档案群分散于系统的树状目录结构中 。像一个支架一般撑起整个操作系统 。在 GNU/Linux 系统中 。其C函式库发展史点出了GNU/Linux 演进的几个重要里程碑 。用 glibc 作为系统的C函式库 。是GNU/Linux演进的一个重要里程碑 。
newlib c库是一个开源的c函数库 。包括libc和libm两部分 。它支持ANSI C库标准 。针对不同处理器架构进行优化 。轻量级 。适用于嵌入式系统 。
一. GLIBC
glibc是一种按照LGPL许可协议发布的C函数库 。是程序运行时使用到的一些API集合 。它们一般是已预先编译好 。以二进制代码形式存在于Linux类系统中 。glibc通常作为GNU C编译程序的一个部分发布 。它最初是自由软件基金会为其GNU操作系统所写 。但目前最主要的应用是配合Linux内核 。成为GNU/Linux操作系统一个重要的组成部分 。
在通用的PC和Server中 。Linux(ubuntu, Redhat, CentOS etc.)默认提供对glibc的支持;但是在嵌入式应用中 。考虑到系统对os大小的要求和简化系统的复杂度等因素 。并不一定支持glibc 。而是支持uClibc、newLib等针对嵌入式应用的C函数库 。这就要求在嵌入式系统开发的过程中 。需要评估应用对glibc的依赖程度 。评估程序开发或移植的工作量和复杂度 。
glibc是linux系统中最底层的api(应用程序开发接口) 。几乎其它任何的运行库都会依赖于glibc 。glibc除了封装linux操作系统所提供的系统服务外 。它本身也提供了许多其它一些必要功能服务的实现 。关于glibc功能的介绍可以在其官方网站上获取到详细的手册资料(http://www.gnu.org/software/libc/manual/) 。
主要的功能如下(摘自glibc手册):
(1)Error Reporting 。进行错误类型的检测和报告(how errors detected by the library are reported)
(2)Language Features, support for standard parts of the C language, including things like the sizeof operator and the symbolic constant NULL, how to write functions accepting variable numbers of arguments, and constants describing the ranges and other properties of the numerical types. There is also a simple debugging mechanism which allows you to put assertions in your code, and have diagnostic messages printed if the tests fail.
(3)Memory, 动态内存的分配和管理 (describes the GNU library’s facilities for managing and using virtual and real memory, including dynamic allocation of virtual memory. If you do not know in advance how much memory your program needs, you can allocate it dynamically instead, and manipulate it via pointers.)
(4) 字符、字符串及数组的处理 Character Handling is about character classification functions (such as isspace) and functions for performing case conversion. String and Array Utilities, include functions for manipulating strings (null-terminated character arrays) and general byte arrays, including operations such as copying and comparison.
(5)标准IO的支持
(6)文件操作的支持(File System Interface, such as functions for deleting and renaming them and for creating new directories. also contains information about how you can access the attributes of a file, such as its owner and file protection modes. )
(7)进程间通讯的支持(Pipes and FIFOs, Pipes allow communication between two related processes (such as between a parent and child), while FIFOs allow communication between processes sharing a common file system on the same machine. )
(8)网络的支持(socket)
(9) 虚拟终端设备的管理 。及系统的安全访问(Low-Level Terminal Interface 。change the attributes of a terminal device. disable echo of characters typed by the user, for example, read this chapter. )
(10)数学及运算库的支持(定点运算和浮点库)
(11)查找和分类的支持(Searching and Sorting)
(12)模式匹配的支持(Pattern Matching)
(13)时间及定时器的管理
(14)不同字符集的编码转换
(15)国际化的支持 。选择不同的语言种类和国家
(16)Non-Local Exits (provide a facility for goto-like jumps which can jump from one function to another.)
(17)信号量的支持(Signal Handling, establish a handler that is called when a particular kind of signal is delivered, and how to prevent signals from arriving during critical sections of your program.)
(18)进程编程和进程控制(process and Job control)
(19)用户管理和系统管理(User Database and System Management) 等
推荐阅读
- 女朋友叫我帮她买姨妈巾,我又不了解什么牌子的姨妈巾比较好。请问哪个牌子的卫生巾好用?
- 卢姥爷要回来了?PDD直播给LBW电话邀其吃鸡,却被网友喷蹭热度,如何评价?
- 大家都在给宝宝用什么纸尿裤呢?
- 中国移动积分换话费教程_编辑多少到10086换话费
- 主播PDD的名字含义是什么,是谁给他取的名字?
- 什么牌子的卫生巾用起来更安全?
- 最新上映电影排行榜前十名 全球电影排行榜前十名
- LOL“最幸福的主播”,PDD住址曝光后,粉丝寄来神秘礼物,骚猪笑出猪叫,如何评价?
- 哪个牌子的卫生巾好用又安全?