C标准库 POSIX库 glibc库
- C 标准函数库(C standard library,缩写:libc)。标准函数库通常会随附在编译器上。windows系统和Linux系统下都可以尽情使用。是最基本的C函数库,也叫ANSI C。ANSI C共包括15个头文件。1995年,Normative Addendum 1 (NA1)批准了3个头文件(iso646.h、wchar.h和wctype.h)增加到C标准函数库中。C99标准增加了6个头文件(complex.h、fenv.h、inttypes.h、stdbool.h、stdint.h和tgmath.h)。C11标准中又新增了5个头文件(stdalign.h、stdatomic.h、stdnoreturn.h、threads.h和uchar.h)。至此,C标准函数库共有29个头文件。总而言之,几乎在任何平台上的 C 语言 (包括非 UNIX 平台) 都支持此标准。
- POSIX 是 Portable Operating System Interface(可移植操作系统接口) 的缩写,X表示UNIX,它是 ISO C 的延伸,明定了一个可移植的操作系统所应具备的种种条件,其范围不只有系统函数库而已。POSIX库 就是C POSIX library。C POSIX library是C语言的POSIX系统下的标准库。包含了一些在C语言标准库之外的函数。为了OS之间的可移植性,POSIX标准规定了一些标准的接口。而这些接口标准的集合就是POSIX库。
- GNU C库(英语:GNU C Library,常简称为glibc)是一种按照LGPL许可协议发布的,自由的,公开源代码的函数库。既包含C标准库,也包含POSIX库。glibc是linux下面c标准库的实现,即GNU C Library。glibc本身是GNU旗下的C标准库,后来逐渐成为了Linux的标准c库,而Linux下原来的标准c库Linux libc逐渐不再被维护。Linux下面的标准c库不仅有这一个,如uclibc、klibc,以及上面被提到的Linux libc,但是glibc无疑是用得最多的。glibc在/lib目录下的.so文件为libc.so.6
glibc库不但包含标准C库的所有头文件,还包含了所有POSIX库的头文件。
如果对POSIX不了解建议先了解下POSIX,参见POSIX是什么有什么用
- Linux系统下各个库头文件位置
以CentOS7为例。通过查看CentOS下标准C库,glibc库,POSIX库头文件的位置,可以对它们的关系有更直接的理解。
一般linux系统把gcc和glibc都安装到/usr/目录,所以gcc可执行文件在/usr/bin目录下,而glibc的库文件在/usr/lib目录下,glibc的头文件在/usr/include目录下。
当然上述的关系并不是一定的,在安装gcc和glibc的时候可以手工指定。可以使用命令“gcc -print-search-dirs”来查看gcc库的搜索路径
详细的可以看这篇文章 Linux头文件和库的搜索路径
- C标准库头文件的位置
C 标准库头文件
这些头文件放在哪些目录下取决于不同的编译器,在我的系统上(CentOS7),stdio.h、stdlib.h、time.h、math.h、assert.h等位于/usr/include目录下,stdarg.h和stddef.h等位于/usr/lib/gcc/x86_64-redhat-linux/4.8.2/include目录下。
/usr/include
/usr/lib/gcc/x86_64-redhat-linux/4.8.2/include
2. POSIX库头文件的位置
POSIX.1 and ISO C标准头文件
sys开头的是Linux系统自己的头文件
sys文件夹在Ubuntu 18.04中的路径:
/usr/include/x86_64-linux-gnu/sys
/usr/include
3. glibc库头文件的存放
/usr/include
再上一层楼