热门标签 | 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 语言的语法、标准函数库、系统调用、工具程序和系统内核特性等多个方面。


推荐阅读
  • 探讨了小型企业在构建安全网络和软件时所面临的挑战和机遇。本文介绍了如何通过合理的方法和工具,确保小型企业能够有效提升其软件的安全性,从而保护客户数据并增强市场竞争力。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 本文详细介绍如何利用已搭建的LAMP(Linux、Apache、MySQL、PHP)环境,快速创建一个基于WordPress的内容管理系统(CMS)。WordPress是一款流行的开源博客平台,适用于个人或小型团队使用。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 本文详细介绍了macOS系统的核心组件,包括如何管理其安全特性——系统完整性保护(SIP),并探讨了不同版本的更新亮点。对于使用macOS系统的用户来说,了解这些信息有助于更好地管理和优化系统性能。 ... [详细]
  • 2018年3月31日,CSDN、火星财经联合中关村区块链产业联盟等机构举办的2018区块链技术及应用峰会(BTA)核心分会场圆满举行。多位业内顶尖专家深入探讨了区块链的核心技术原理及其在实际业务中的应用。 ... [详细]
  • 本文详细介绍如何在Linux系统中配置SSH密钥对,以实现从一台主机到另一台主机的无密码登录。内容涵盖密钥对生成、公钥分发及权限设置等关键步骤。 ... [详细]
  • 本文详细介绍了 Java 中的 org.apache.hadoop.registry.client.impl.zk.ZKPathDumper 类,提供了丰富的代码示例和使用指南。通过这些示例,读者可以更好地理解如何在实际项目中利用 ZKPathDumper 类进行注册表树的转储操作。 ... [详细]
  • 网络攻防实战:从HTTP到HTTPS的演变
    本文通过一系列日记记录了从发现漏洞到逐步加强安全措施的过程,探讨了如何应对网络攻击并最终实现全面的安全防护。 ... [详细]
  • 深入解析 Spring Security 用户认证机制
    本文将详细介绍 Spring Security 中用户登录认证的核心流程,重点分析 AbstractAuthenticationProcessingFilter 和 AuthenticationManager 的工作原理。通过理解这些组件的实现,读者可以更好地掌握 Spring Security 的认证机制。 ... [详细]
  • 作为一名专业的Web前端工程师,掌握HTML和CSS的命名规范是至关重要的。良好的命名习惯不仅有助于提高代码的可读性和维护性,还能促进团队协作。本文将详细介绍Web前端开发中常用的HTML和CSS命名规范,并提供实用的建议。 ... [详细]
  • 本文详细介绍了Java中的输入输出(IO)流,包括其基本概念、分类及应用。IO流是用于在程序和外部资源之间传输数据的一套API。根据数据流动的方向,可以分为输入流(从外部流向程序)和输出流(从程序流向外部)。此外,还涵盖了字节流和字符流的区别及其具体实现。 ... [详细]
  • Python入门:第一天准备与安装
    本文详细介绍了Python编程语言的基础知识和安装步骤,帮助初学者快速上手。涵盖Python的特点、应用场景以及Windows环境下Python和PyCharm的安装方法。 ... [详细]
  • 本文详细介绍了在 Windows 2000 系统中启用 TELNET 服务时需要注意的 NTLM 配置问题,帮助用户解决常见的身份验证失败错误。 ... [详细]
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社区 版权所有