Linux 提供了丰富的库函数,涵盖了各种领域,从文件操作到网络编程、图形界面、数学运算等。这些库函数大多数都是标准的 C 库函数,同时也包括一些特定于 Linux 系统的库。
Linux库函数通常以动态库文件(.so)的形式提供,存放在根文件系统的 /lib 目录下。
Linux库函数构建于系统调用之上,尽管有些库函数并不调用系统调用。例如,一些字符串处理函数(strlen()、strcat()、memcpy()、memset()、strchr() 等)。
但是,其他库函数可能会使用系统调用来完成实际的操作,例如 fopen 内部调用了系统调用 open() 来打开文件,fread() 利用了系统调用 read() 来读取文件,fwrite() 则使用了系统调用 write() 来写文件。
Linux 内核提供了一系列系统调用供应用层使用,直接使用系统调用是一种方法。然而,有些系统调用使用起来不够方便,因此引入了 C 语言库。这些库函数的设计旨在提供比底层系统调用更方便、更易用、更具可移植性的调用接口。它们之间的区别如下:
尽管从实现者的角度来看,系统调用与库函数存在根本的区别,但从用户使用的角度来看,这些区别并不重要。对于应用编程者来说,它们都是 C 语言函数。在实际应用编程中,库函数和系统调用都会被使用。因此,从用户的角度来看,将它们视为 C 函数即可,无需过分区分它们之间的差异。
在Linux系统下,使用的C语言库主要是GNU C语言函数库,也被称为glibc。它是Linux下的标准C语言函数库,为开发者提供了丰富的函数集,涵盖了输入输出、字符串处理、数学运算、文件操作等多个领域。
网站:https://sourceware.org/glibc/
glibc 源码的获取方式很简单,直接直接从 git 仓库下载,也可以通过 ftp 下载: