当前位置:首页 > 生活百科

c函数定义的格式(初中函数入门基础知识)

栏目:生活百科日期:2025-05-14浏览:0

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) 等

二. uClibc

uClibc 是一个面向嵌入式Linux系统的小型的C标准库。最初uClibc是为了支持uClinux而开发,这是一个不需要内存管理单元的Linux版本,因此适合于微控制器系统(uCs;此处&”u&”是代表&”micro&”的μ的罗马化).[2]

uClibc比一般用于Linux发行版的C库GNU C Library (glibc)要小得多,glibc目标是要支持最大范围的硬件和内核平台的所有C标准,而uClibc专注于嵌入式Linux.很多功能可以根据空间需求进行取舍。

uClibc运行于标准的以及无MMU的Linux系统上,支持tile, i386,x86 64,ARM (big/little endian), AVR32,Blackfin,h8300,m68k,MIPS (big/little endian), PowerPC,SuperH (big/little endian), SPARC,和v850等处理器。

uClibc和Glibc并不相同,两者有许多不同之处,而且以下不同有可能给你带来一些问题.

1.uClibc比Glibc小,虽然uClibc和Glibc在已有的接口上是兼容的,而且采用uClibc编译应用程序比采用Glibc编译应用程序要更方便,但是uClibc并没有包括Glibc中的所有接口实现,因此有些应用可能在uClibc中不能编译。

2.uClibc在可配置性上比Glibc要好。

3.uClibc并不能保证发布的库二进制兼容旧版本uClibc库。当一个新的版本uClibc库被发布,则可能需要也可能不需要重新编译应用程序。

4.uClibc没有提供用于数据接口的库(libdb)。

5.uClibc不支持NSS(/lib/libnss_*),在这方面Glibc更容易支持不同方式的认证和DNS解析。uClibc仅仅支持采用flat口令文件或者shadow口令文件存储授权信息。如果需要比这些更复杂的的授权,可以编译安装pam。

6.uClibc中的libresolv库仅仅是一个桩。Glibc的libresolv库中的部分并不是全部的功能uClibc都提供,许多函数都没有实现。

7.提供网络信息服务支持(NIS)libnsl库(最初被称为黄页YP),被SUN扩展为发明为RPC并用于网络共享Unix口令文件

。个人认为NIS是一个令人厌恶的东西并应该使用。因此,在实现相同的功能情况下采用ldap比NIS更有效。uClibc虽然提供一个桩libnsl,但并不支持NIS。我们因此也不提供在Glibc下提供的位于/usr/include/rpcsvc里的头文件。

8.uClibc的区域支持并不是100%的完全。正在这方面努力

9.uClibc的数据功能函数库内部仅仅支持long double,设置对于long double的支持也是非常有限。与此对应的只实现了较少的数学函数。如果应用程序采用double类型,则会程序会运行得较好。

10.uClibc的libcrpt库不支持可重入crypt_r,setkey_r和encrypt_r,因为这些也不是SuSv3所规定的。

11.uClibc直接采用内核的数据类型去定义大多数透明的数据类型。

12.uClibc支持采用linux内核结构特有的结构体&”struct stat&”。

13.uClibc的运行时库librt当前缺少aio接口、全部的时钟接口和共享内存接口(仅仅实现定时器接口和消息队列接口)

三. newlib

Newlib是一个面向嵌入式系统的C运行库。最初是由Cygnus Solutions收集组装的一个源代码集合,取名为newlib,现在由Red Hat维护。

对于与GNU兼容的嵌入式C运行库,Newlib并不是唯一的选择,但是newlib是比较优秀和成熟度比较高的一个。newlib具有独特的体系结构,使得它能够非常好地满足深度嵌入式系统的要求。newlib可移植性强,具有可重入特性、功能完备等特点,已广泛应用于各种嵌入式系统中。

newlib 是一个用于嵌入式系统的开放源代码的C语言程序库,由libc和libm两个库组成,特点是轻量级,速度快,可移植到很多CPU结构上。newlib实现了许多复杂的功能,包括字符串支持,浮点运算,内存分配(如malloc)和I/O流函数(printf,fprinf()等)。其中libc提供了c 语言库的实现,而libm提供了浮点运算支持。

在使用gcc编译器时,对gcc指定不同的配置选项时,使用的C语言库就不同,默认情况是下使用glibc,可以通过&–with-newlib选择使用newlib.

“c函数定义的格式(初中函数入门基础知识)” 的相关文章

信息管理与信息系统论文摘要(信管的本科论文选题方向)

一、专业简介信息管理与信息系统专业,简称“信管”or“管信“,它属于管理学门类中的管理科学与工程类,是这个一级学科下的的一个重要二级学科。它主要起源于计算机应用...

poe设备有哪些(poe交换机接口介绍)

PoE光纤收发器是构建企业PoE网络架构的常见设备之一,它可以利用现有的非屏蔽双绞线布线来给网络设备供电。本教程将详细介绍PoE光纤收发器的基础知识。什么是Po...

seo优化是怎么做的,新手做seo流程步骤

SEO优化该怎么做呢,如果事先了解百度的抓取收录原理机制,那会更容易理解,一般做SEO优化,首先我们得有一个属于自己的网站,可以说这是一个硬件条件。一、技术层面...

itunes检测不到ipad怎么办(连接使用itunes的常见问题)

ipad/iphone连接使用itunes的常见问题。我的音乐和应用程序都没保存在C盘,为什么使用iTunes之后,我的C盘变的越来越小?C:Users你的用户...

信念的含义是什么,深度剖析信念的真正含义

有个世界冠军,他叫克里夫杨,61岁了,是一个边远山区的牧羊人。他去澳大利亚参加一个有几百人参与的马拉松长跑,从悉尼到墨尔本有600多公里。600多公里要跑多久?...

公众号怎么引流推广(新手必看公众号引流攻略)

微信公众号吸粉引流的方法有很多,但是很多人在实际操作的时候并没有得到很好的效果。实际上,这种效果不佳并不意味着这种方法不起作用,但在落实的过程中可能会因为操作不...

十点读书怎么配音赚钱,十点读书播音兼职方法

1月4日消息,“十点读书”已经完成超6000万元A轮融资,估值近4亿元。本次融资由清科华盖管理的清科岭协基金领投,微影资本、赛富投资基金跟投。据创投时报项目数据...

ie浏览器内核怎么设置(webview版本检测网站)

五大浏览器是哪五个?搜狗浏览器?QQ浏览器?UC浏览器?360浏览器?百度浏览器?nonono!!!都不对,以上确实是我们常见的浏览器,但不能称之为主流浏览器,...

dnf女圣职者四职业排行,dnf女圣职者平民转什么好

DNF地下城与勇士6月22号更新了女圣职者四个职业,今天已经过去一个星期,大家对四个职业都有了一定的理解,那么女圣职者四职业中到底哪个刷图搬砖的能力更为强悍呢?...

企业网络营销推广方案分析,网络推广有哪些渠道

随着互联网的发展网络营销被各大公司所重视,也是推广公司平拍知名度的最有利策略。网络营销整体策划答题思考方向是:产品性质,网络特性,整体营销考虑,网络创意营销,网...