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