好的,事情就是这样。
大多数人在第一次接触 C 语言时同时了解 C 标准库,我也不例外。但是当我现在正在学习 linux 时,我倾向于对 C 库感到困惑。首先,我知道当您在 Linux 发行版上安装 gcc 作为静态库时,您会得到一个不错的旧 C 标准库。在那之后,只要你连接到互联网,你就会得到一个新的稳定版本的 glibc。
我开始研究 glibc API,这就是我搞砸的地方。glibc 似乎支持大量的库,基本上从 POSIX C 标准库(它实现了标准 C 库(包括我所知道的 C99))到它自己基于 POSIX 标准 C 库的扩展。
这是否意味着 glibc 实际上修改或添加了 POSIX C 标准库中的函数?甚至添加全新的标题集?因为我看到一些不在标准 C 库中但实际上包含在标准 C 头文件中的函数(例如 strnlen()
还提到我提到的“glibc 制作全新的头文件集”,是因为我开始看到一些看起来非常独特的头文件,例如 linux/blahblah.h 或 sys/syscalls.h <=(这些只有 glibc 支持的库?)
下一个问题是我居然听说linux是基于C语言构建的。这是否意味着linux用它自己的gcc编译器编译自己??????