电子产业一站式赋能平台

PCB联盟网

搜索
查看: 137|回复: 0
收起左侧

嵌入式Linux:Linux库函数

[复制链接]

679

主题

679

帖子

2524

积分

三级会员

Rank: 3Rank: 3

积分
2524
发表于 2024-4-17 12:02:00 | 显示全部楼层 |阅读模式

f4yssg5crma64040136.gif

f4yssg5crma64040136.gif

点击上方蓝色字体,关注我们
1
Linux库函数简介
Linux 提供了丰富的库函数,涵盖了各种领域,从文件操作到网络编程、图形界面、数学运算等。这些库函数大多数都是标准的 C 库函数,同时也包括一些特定于 Linux 系统的库。

Linux库函数通常以动态库文件(.so)的形式提供,存放在根文件系统的 /lib 目录下。

Linux库函数构建于系统调用之上,尽管有些库函数并不调用系统调用。例如,一些字符串处理函数(strlen()、strcat()、memcpy()、memset()、strchr() 等)。

5gza3a2gpgt64040236.png

5gza3a2gpgt64040236.png


但是,其他库函数可能会使用系统调用来完成实际的操作,例如 fopen 内部调用了系统调用 open() 来打开文件,fread() 利用了系统调用 read() 来读取文件,fwrite() 则使用了系统调用 write() 来写文件。

sqnigb4sgoq64040336.png

sqnigb4sgoq64040336.png


Linux 内核提供了一系列系统调用供应用层使用,直接使用系统调用是一种方法。然而,有些系统调用使用起来不够方便,因此引入了 C 语言库。这些库函数的设计旨在提供比底层系统调用更方便、更易用、更具可移植性的调用接口。它们之间的区别如下:
  • 库函数属于应用层,而系统调用是内核提供给应用层的编程接口,属于系统内核的一部分。
  • 库函数运行在用户空间,而调用系统调用会导致从用户空间(用户态)陷入到内核空间(内核态)。
  • 库函数通常具有缓存,而系统调用是无缓存的,因此在性能和效率上,库函数通常优于系统调用。
  • 可移植性方面,库函数相对于系统调用具有更好的可移植性。由于不同操作系统的系统调用定义、功能、参数列表、返回值等通常不同,C 语言库函数在不同操作系统之间的接口定义几乎相同,因此具有更好的可移植性。

    尽管从实现者的角度来看,系统调用与库函数存在根本的区别,但从用户使用的角度来看,这些区别并不重要。对于应用编程者来说,它们都是 C 语言函数。在实际应用编程中,库函数和系统调用都会被使用。因此,从用户的角度来看,将它们视为 C 函数即可,无需过分区分它们之间的差异。
    2
    标准C语言库函数
    在Linux系统下,使用的C语言库主要是GNU C语言函数库,也被称为glibc。它是Linux下的标准C语言函数库,为开发者提供了丰富的函数集,涵盖了输入输出、字符串处理、数学运算、文件操作等多个领域。

    dxfboq4nwtb64040436.png

    dxfboq4nwtb64040436.png


    网站:https://sourceware.org/glibc/

    glibc 源码的获取方式很简单,直接直接从 git 仓库下载,也可以通过 ftp 下载:

    owyl1otfkuh64040536.png

    owyl1otfkuh64040536.png



    h3h3rhti5cw64040636.jpg

    h3h3rhti5cw64040636.jpg

    okagetmqzj464040736.gif

    okagetmqzj464040736.gif

    点击阅读原文,更精彩~
  • 回复

    使用道具 举报

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则


    联系客服 关注微信 下载APP 返回顶部 返回列表