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

36 c gnu glibc standard-library

我正在寻找C标准库的源代码.我的意思是,例如,如何编写cos,abs,printf,scanf,fopen和所有其他标准C函数,我的意思是看他们的源代码.

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

Aft*_*nix 50

它是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
Run Code Online (Sandbox Code Playgroud)

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


jfo*_*erg 10

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

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

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

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

  • Microsoft使用Visual Studio发布了C运行时的源代码(我相信即使使用免费的Express版本).但是,由于某种原因,它不会*包含浮点例程的源(或至少是它们中的一部分).也许他们是从不允许源分发的第三方获得许可的?如果MS认为它们比运行时的其他部分更重要,我会感到惊讶. (4认同)

小智 7

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