我正在寻找 C 标准库的源代码。我的意思是,例如,cos、abs、printf、scanf、fopen 和所有其他标准 C 函数是如何编写的,我的意思是看它们的源代码。
所以在搜索这个时,我遇到了 GLIBC,但我不知道它到底是什么。它是 GNU C 库,它包含一些源代码,但它们实际上是什么,它们是标准函数的源代码还是其他东西?它是用来做什么的?
我正在寻找 C 标准库的源代码。我的意思是,例如,cos、abs、printf、scanf、fopen 和所有其他标准 C 函数是如何编写的,我的意思是看它们的源代码。
所以在搜索这个时,我遇到了 GLIBC,但我不知道它到底是什么。它是 GNU C 库,它包含一些源代码,但它们实际上是什么,它们是标准函数的源代码还是其他东西?它是用来做什么的?
它是 C 标准中描述的标准 C 库的实现,以及一些额外有用的东西,这些东西不是严格标准但经常使用。
它的主要内容是:
1) ANSI、c99、c11 标准中描述的 C 库。它包括宏、符号、函数实现等(printf()、malloc() 等)
2) POSIX 标准库。系统调用的“用户空间”粘合剂。(open(),read()等。实际上glibc并没有“实现”系统调用。内核会这样做。但是glibc为内核提供的服务提供了用户空间接口,以便用户应用程序可以像普通的一样使用系统调用功能。
3)还有一些非标准但有用的东西。
“使用武力,阅读源代码”
$git clone git://sourceware.org/git/glibc.git
(当我在 glibc 中查看 malloc.c 时,我最近非常开明)
该标准有多种实现方式。Glibc 是大多数 Linux 使用的实现,但也有其他实现。Glibc 还包含(如 Aftnix 所述)为跳转到内核(也称为系统调用)设置场景的粘合函数。许多 glibc 的“函数”并不做实际的工作,而只是委托给内核。
要阅读 Glibc 的源代码,只需 google 即可。有无数的网站可以携带它,也有几种变体。
Windows 使用微软自己的实现,我相信它被称为 MSVCR.DLL。我怀疑您是否会在任何地方找到该库的源代码。另请注意,Linux 黑客可能认为是“标准”的某些功能在 Windows 上根本不存在(尤其是 fork)。反之亦然。
其他系统将有自己的 libc。
glibc 包包含系统上多个程序使用的标准库。为了节省磁盘空间和内存,以及使升级更容易,公共系统代码被保存在一个地方并在程序之间共享。这个特定的包包含最重要的共享库集:标准 C 库和标准数学库。没有这两个库,Linux 系统将无法运行。glibc 包还包含国家语言(区域设置)支持。
是的,它是标准库函数的实现。
更具体地说,它是所有 GNU 系统和几乎所有使用 Linux 内核的 *NIX 系统的实现。
以下是一些“动手”的观点:
strlen
: