C标准库与gcc的关系
首先 C 是一门语言,包含了一些规定的语法和结构,但并没有包含到我们平常所用的函数,如 printf() 和 scanf(),这些只是由 C 标准库所提供的。之所以存在 C标准库,是因为这些已经编好的函数是我们平常编程经常用到的,这可以方便我们的工作。当然,你也可以自己编写方便编程、属于自己的 C 库。C 标准仅仅是规定了接口,也就是仅规定了函数原型,或者说头文件,而具体的实现各有不同。glibc 库是其中一种对 C 标准的实现,由 GNU 完成,GNU C LIBRARY。我们平常写 C 程序时,为了可以用到一些规定好的函数,会在前面包含头文件,相当于函数原型声明。通过 gcc 对程序编译,然后链接 C 库,链接相当于将函数的具体实现连起来,最后形成二进制文件。
Linux 是由 C 语言编写的,它由自己的头文件和内核函数来实现内核的功能。内核的编写并不依赖于 C 标准库。
而且 C 标准库里面的一些函数是封装了 Linux 的系统调用的。
所谓的 POSIX 标准,是规定操作系统要提供哪些接口,但没有规定具体的实现。POSIX 标准包含了 C 标准规定的头文件和另外一些提供系统服务的头文件。通过 POSIX 接口,我们可以进行系统编程。