什么是GLIBC?它是干什么用的?

时间:2012-07-12 21:14:12

标签: c gnu glibc standard-library

我正在搜索C标准库的源代码。我的意思是,例如,cos,abs,printf,scanf,fopen以及所有其他标准C函数是如何编写的,我的意思是看他们的源代码。

所以在搜索这个时,我遇到了GLIBC,但我不知道它究竟是什么。它是GNU C库,它包含一些源代码,但它们实际上是什么,它们是标准函数的源代码还是其他东西?它用于什么?

5 个答案:

答案 0 :(得分:42)

C标准中描述的标准C库的实现加上一些非常有用的东西,这些东西不是严格标准但经常使用的。

其主要内容是:

1)C库,ANSI,c99,c11标准中描述。它包括宏,符号,函数实现等(printf(),malloc()等)

2)POSIX标准库。系统调用的“userland”粘合剂。 (open(),read()等。实际上glibc没有“实现”系统调用。内核会这样做。但是glibc为内核提供的服务提供了用户地面接口,这样用户应用程序就可以像普通的一样使用系统调用功能

3)还有一些非标准但有用的东西。

“使用武力,阅读来源”

$git clone git://sourceware.org/git/glibc.git

(当我在glibc中查看malloc.c时,我最近很开明)

答案 1 :(得分:9)

该标准有几种实现方式。 Glibc是大多数Linux使用的实现,但还有其他的。 Glibc还包含(如Aftnix所述)胶水功能,它设置场景以跳转到内核(也称为系统调用)。很多glibc的“函数”都没有做实际的工作,只是委托给内核。

要阅读Glibc的来源,只需谷歌即可。有无数的网站带有它,还有几种变化。

Windows使用Microsoft自己的实现,我相信它被称为MSVCR.DLL。我怀疑你会在任何地方找到该库的源代码。另请注意,Linux黑客可能认为某些功能是“标准”的,在Windows上并不存在(特别是fork)。反之亦然。

其他系统将拥有自己的libc。

答案 2 :(得分:7)

glibc包中包含标准库,供系统上的多个程序使用。为了节省磁盘空间和内存,以及使升级更容易,常见的系统代码在一个地方保存并在程序之间共享。此特定包包含最重要的共享库集:标准C库和标准数学库。没有这两个库,Linux系统将无法运行。 glibc包还包含国家语言(语言环境)支持。

答案 3 :(得分:2)

是的,这是标准库函数的实现。

更具体地说,它是所有GNU系统和几乎所有使用Linux内核的* NIX系统的实现。

答案 4 :(得分:1)

以下是一些“动手”的观点: