2011-06-16 78 views
2

我是C初学者,我想了解各种库的实现方式。我查看/ usr/src/include下的所有文件。例如,我在看malloc.h,它所做的只是声明extern函数。 所以我试图找到这些功能的来源。我下载了gcc源代码rpm,但看着gcc源代码,它看起来更像是编译器代码,而不是像stdlib这样的库的代码。 你能帮我指点一下正确的方向吗?在哪里可以找到c源代码

谢谢。

+0

'gcc'源代码*应*看起来像“编译代码”,毕竟,'gcc' **是一个编译器。 – pavium 2011-06-16 12:36:45

+0

有点遗憾:'malloc.h'是遗留的兼容性垃圾,不应该使用。 'malloc'的正确标题是'stdlib.h'。 – 2011-06-16 14:05:20

回答

7

您需要获取相关C库的源代码,可能是您的案例中的glibceglibc

在/ usr/include /文件夹中,只存在libc的头文件,以及linux /子文件夹中的一些linux内核头文件。

3
  • .h文件从不包含代码(好吧,至少他们应该。宏是例外)
  • 基本的C函数被glibc中或Linux内核
  • GCC,Linux和glibc的代码是巨大的野兽,如果你是一个初学者,你应该去做简单的事情
  • 你可能应该采取一个简单的图书馆,一个提供一些工具的小图书馆。
  • 然后去为Linux和glibc(或uClibc的)

我personnaly通过读取微控制器系统库如http://www.nongnu.org/avr-libc/学到了很多有趣的东西,但是这取决于你需要做的事情,它需要一个微控制器运行。

一个想法:根据你在找什么,你可以去busybox:它是许多有用的系统命令的重新实现,你可以从中学到很多东西,并且运行它不需要专用计算机。

更新:我问相关的,从我不是导师POV得到了一些非常有趣的答案glibc的功能的问题: where to find select() source code in glibc source?

+1

我在http://www.makelinux.net/kernel_map上发现了内核映射,这是内核代码组织方式的一个很好的来源 – Jimm 2011-06-16 13:20:11

+0

哇,那个内核映射正是我一直在寻找的!谢谢 – 2011-06-16 14:27:00

相关问题