2011-06-16 76 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

相關問題