热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux下的C函数库概览(POSIXC、ANSIC、GNUC及ISOC)

GNU发布的glibc是Linux系统中最基础的C运行库,提供了一系列底层API,几乎所有其他运行库都依赖于它。本文详细介绍了glibc的主要功能和服务,并探讨了其在系统开发中的重要性。

glibc 是 GNU 发布的 libc 库,即 C 运行库。它是 Linux 系统中最底层的应用程序开发接口(API),几乎所有其他运行库都依赖于 glibc。glibc 不仅封装了 Linux 操作系统提供的系统服务,还提供了许多其他必要的功能服务。以下是 glibc 提供的主要功能:

  • 字符串处理(string)
  • 信号处理(signal)
  • 管理共享库的动态加载(dlfcn)
  • 文件目录操作(direct)
  • 共享库的动态加载器(elf,即 interpreter)
  • 不同字符集的编码转换(iconv)
  • socket 接口的实现(inet)
  • 国际化支持(gettext 实现,即 intl)
  • 输入输出操作(io)
  • 线程管理(linuxthreads)
  • 本地化(locale)
  • 虚拟终端设备管理及系统安全访问(login)
  • 动态内存分配与管理(malloc)
  • 网络信息服务(nis)
  • 其他基本功能(stdlib)

glibc 囊括了几乎所有的 UNIX 通行标准,如 System V 和 POSIX 标准。这些标准确保了 glibc 的内容包罗万象,支撑起整个操作系统。glibc 的文件分布在系统的树状目录结构中,主要包括:

  • 共享函数库(.so 文件),分布在 /lib 和 /usr/lib 目录中,包括标准 C 函数库(libc)、数学函数库(libm)、加密与编码函数库(libcrypt)、数据库函数库(libdb)、多线程函数库(libpthread)和网络服务函数库(libnss)等。
  • 函数库头文件和开发组件,头文件以 .h 结尾,位于 /usr/include/ 目录下,包含函数库中各函数的声明、宏定义和数据类型的定义。
  • 静态链接库(.a 文件)和目标文件(.o 文件),位于 /usr/lib/ 目录中,用于编译过程中将代码与函数库链接为可执行文件。
  • 函数库说明文档,通常位于 /usr/man 或 /usr/share/man 目录下,统称为 manpages,分为多个章节,其中第二章(man2)介绍系统调用,第三章(man3)介绍标准 C 函数库。
  • 字集转换模块和区域化数据库,位于 /usr/lib/gconv/、/usr/lib/locale/、/usr/share/locale/ 和 /usr/share/i18n/ 目录中,支持国际化和本地化。
  • 时区数据库,位于 /usr/share/zoneinfo 目录下,包含世界各地时区与格林威治时间的转换数据。
  • 其他工具程序和配置文件,位于 /usr/bin 和 /sbin 目录下,包括 iconv、locale、localedef、ldd 和 ldconfig 等工具,相关配置文件位于 /etc 目录下。

glibc 在 GNU/Linux 系统的发展中扮演了重要角色。早期的 GNU/Linux 系统不支持共享库,所有应用程序都以静态链接方式存在于系统中。直到 1995-1996 年,随着 libc5 的出现,系统开始支持 ELF 共享库,C 函数库的功能也得到了显著增强。然而,libc5 在国际化和本地化方面支持较差,直到 GNU/Linux 采用 glibc-2.0 作为 C 函数库后,国际化和本地化支持才逐渐成熟。

glibc 支持多种标准和规范,包括 ISO C、POSIX、Berkeley Unix、SVID 和 XPG,确保了在 glibc 下开发的程序可以轻松移植到其他 UNIX 平台。这些标准和规范涵盖了 C 语言的语法、标准函数库、系统调用、工具程序和系统内核特性等多个方面。


推荐阅读
  • 本文探讨了在Android应用程序开发过程中动态管理Fragment的方法,包括动态添加和切换Fragment,以及如何实现平滑的过渡动画。文章通过一个具体的案例——订单管理系统,详细介绍了实现步骤和技术细节。 ... [详细]
  • Pikachu平台SQL注入漏洞详解
    本文详细介绍了SQL注入漏洞的基本原理、攻击流程、不同类型注入点的识别与利用方法,以及基于union联合查询、报错信息、布尔盲注、时间盲注等多种技术手段的信息获取方式。同时,探讨了如何通过SQL注入获取操作系统权限,以及HTTP Header注入和宽字节注入等高级技巧。最后,提供了使用SQLMap自动化工具进行漏洞测试的方法和常见的SQL注入防御措施。 ... [详细]
  • mybatis相关面试题 ... [详细]
  • 本文旨在探讨Linux系统中两种重要的进程间通信(IPC)机制——System V和POSIX的标准及其特性,为开发者提供深入的理解。 ... [详细]
  • GCC(GNU Compiler Collection)是GNU项目下的一款功能全面且高效的多平台编译工具,广泛应用于Linux操作系统中。本文将详细介绍GCC的特点及其基本使用方法。 ... [详细]
  • 深入解析C语言中的sizeof操作符陷阱
    本文通过一个具体的例子探讨了C语言中sizeof操作符的使用陷阱,并详细分析了导致程序行为异常的原因。 ... [详细]
  • 本文探讨了在多媒体软件开发中处理大型WAV音频文件的策略。由于Windows提供的`sndPlaySound` API仅适用于小文件,对于大型WAV文件,我们介绍了使用MCI(Media Control Interface)命令的一种有效解决方案。 ... [详细]
  • 本文详细介绍如何在树莓派上安装并配置Samba服务,以实现与Windows系统的网络共享兼容性。适合初学者参考。 ... [详细]
  • C语言编程>第十九周 ④ 下列给定程序中,函数fun的功能是:实现两个整数的交换。
    例题:下列给定程序中,函数fun的功能是:实现两个整数的交换。例如,给x和y分别输入60和65,输出为:x65y60。注意:不要改动main函数,不能增行或删行,也不能更改程序的结 ... [详细]
  • NetCat,因其强大的多功能性和灵活性,被网络安全领域的专业人士誉为‘瑞士军刀’。本文将详细介绍NetCat的功能、应用场景及其在不同平台上的使用方法。 ... [详细]
  • 探讨如何利用Visual Basic (VB) 将十六进制或二进制字符串写入Windows注册表的方法。 ... [详细]
  • 本文详细介绍了中心方形数的概念及其计算方法,并提供了多种编程语言下的实现代码。 ... [详细]
  • 本文详细介绍了如何利用go-zero框架从需求分析到最终部署至Kubernetes的全过程,特别聚焦于微服务架构中的网关设计与实现。项目采用了go-zero及其生态组件,涵盖了从API设计到RPC调用,再到生产环境下的监控与维护等多方面内容。 ... [详细]
  • 最新进展:作为最接近官方声明的信息源,本文吸引了大量关注。若需获取最新动态,请访问:lkhill.com/ccie-version-5-update ... [详细]
  • 本文回顾了作者在求职阿里和腾讯实习生过程中,从最初的迷茫到最后成功获得Offer的心路历程。文中不仅分享了个人的面试经历,还提供了宝贵的面试准备建议和技巧。 ... [详细]
author-avatar
lbjf_887
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有