"); //-->
1
Linux库函数简介
Linux 提供了丰富的库函数,涵盖了各种领域,从文件操作到网络编程、图形界面、数学运算等。这些库函数大多数都是标准的 C 库函数,同时也包括一些特定于 Linux 系统的库。
Linux库函数通常以动态库文件(.so)的形式提供,存放在根文件系统的 /lib 目录下。
Linux库函数构建于系统调用之上,尽管有些库函数并不调用系统调用。例如,一些字符串处理函数(strlen()、strcat()、memcpy()、memset()、strchr() 等)。
但是,其他库函数可能会使用系统调用来完成实际的操作,例如 fopen 内部调用了系统调用 open() 来打开文件,fread() 利用了系统调用 read() 来读取文件,fwrite() 则使用了系统调用 write() 来写文件。
Linux 内核提供了一系列系统调用供应用层使用,直接使用系统调用是一种方法。然而,有些系统调用使用起来不够方便,因此引入了 C 语言库。这些库函数的设计旨在提供比底层系统调用更方便、更易用、更具可移植性的调用接口。它们之间的区别如下:
库函数属于应用层,而系统调用是内核提供给应用层的编程接口,属于系统内核的一部分。
库函数运行在用户空间,而调用系统调用会导致从用户空间(用户态)陷入到内核空间(内核态)。
库函数通常具有缓存,而系统调用是无缓存的,因此在性能和效率上,库函数通常优于系统调用。
可移植性方面,库函数相对于系统调用具有更好的可移植性。由于不同操作系统的系统调用定义、功能、参数列表、返回值等通常不同,C 语言库函数在不同操作系统之间的接口定义几乎相同,因此具有更好的可移植性。
尽管从实现者的角度来看,系统调用与库函数存在根本的区别,但从用户使用的角度来看,这些区别并不重要。对于应用编程者来说,它们都是 C 语言函数。在实际应用编程中,库函数和系统调用都会被使用。因此,从用户的角度来看,将它们视为 C 函数即可,无需过分区分它们之间的差异。
2
标准C语言库函数
在Linux系统下,使用的C语言库主要是GNU C语言函数库,也被称为glibc。它是Linux下的标准C语言函数库,为开发者提供了丰富的函数集,涵盖了输入输出、字符串处理、数学运算、文件操作等多个领域。
网站:https://sourceware.org/glibc/
glibc 源码的获取方式很简单,直接直接从 git 仓库下载,也可以通过 ftp 下载:
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
FFT公司9200的板子的资料
意法半导体出厂中国制造的STM32 MCU
华清远见嵌入式在线视频教程——2、嵌入式系统的选择与开发
LCD驱动器SD0432与嵌入式系统的接口设计
华清远见嵌入式在线视频教程——3、嵌入式Linux开发应用介绍
嵌入式操作系统大比拼
[链接]Firefox_ 重新发现网络
RK3576 + ROS2 SLAM建图与导航实战
嵌入式U盘读写器接口技术和系统设计
从COM到SMARC再到OSM:嵌入式计算模块的发展
大家在互相借鉴吧!--嵌入式系统词汇表
大家在互相借鉴吧!--嵌入式系统词汇表
大家在互相借鉴吧!--嵌入式系统词汇表
ARM 开发板使用手册 在三星 S3C2410开发板上烧写linux
机箱内部互联新标准:eUSB2 与 eUSB2V2 技术详解
IAR 扩展了嵌入式开发平台,提供 LTS 服务
LAN91C111型控制器在嵌入式以太网接口中的应用
linux入门精华
嵌入式看门狗如何提升系统稳定性
米尔亮相德国嵌入式展2026 Embedded World
华清远见嵌入式在线视频教程——1、走近嵌入式系统
华清远见嵌入式在线视频教程——4、基于ARM的嵌入式开发
大家在互相借鉴吧!--嵌入式系统词汇表
彻底告别486:Linux内核维护者正式移除英特尔486处理器支持
嵌入式系统的实时数据接口扩展
U-BOOT 与 MontaVista Linux 的移植
Linux系统下USB摄像头驱动开发
2026嵌入式视觉峰会:Meta提出端侧AI硬件优先设计
华清远见嵌入式在线视频教程——5、嵌入式Linux移植和u-boot
Linux就AI生成代码定下规则:允许Copilot类工具、拒绝劣质AI代码,错误由人类负责