經過make menuconfig 生成 .config 決定哪些驅動編譯到核心,哪些驅動編譯為模組
那為什麼呢?舉個例子分析一下
eg: 在.config 中有 config_dm9000 = y
grep "config_dm9000 " * -r
1. c檔案中
arch/arm/mach-s5pv210/mach-tq210.c:#ifdef config_dm9000
2. defconfig檔案
arch/arm/configs/tq210_defconfig:config_dm9000=y
3. 子目錄中
drivers/net/makefile:obj-$(config_dm9000) += dm9000.o //聯絡到obj-m,obj-y的含義
4. include資料夾
include/config/auto.conf:config_dm9000=y
include/generated/autoconf.h:#define config_dm9000 1
聯絡:聯絡1,4 c檔案使用的巨集 被定義在 include下面的 autoconf.h,c檔案編譯時會包含此標頭檔案,使.c中的巨集有效。
聯絡2.3 頂層makefile會include auto.conf 在編譯子目錄下的makefile 時決定驅動該編譯為ko檔案還是編譯進入核心。
聯絡4和.config 可以認為 .config生成了auto.conf與autoconf.h 這兩個檔案
make menuconfig 配置kconfig之後產生.config ,.config編譯時產生 auto.conf 和autoconf.h
auto.conf 被頂層makefile include
autoconf.h被c源**的標頭檔案包含
Linux核心配置 config檔案
在命令列中,進入頂層核心目錄,並輸入命令make menuconfig,就可以啟動乙個基於選單的核心配置編輯器。從這裡開始,你可以訪問每個可用的配置引數,並生成乙個定製的核心配置。當你退出配置編輯器時,它會提示你是否儲存修改,如果選擇儲存修改,全域性配置檔案.config就會被更新 如果不存在,則會...
Linux核心中的list for each
在linux核心原始碼中,經常要對鍊錶進行操作,其中乙個很重要的巨集是list for each entry 意思大體如下 假設只有兩個結點,則第乙個member代表head,list for each entry的作用就是迴圈遍歷每乙個pos中的member子項。巨集list for each e...
Linux核心中的Namespace
linux核心中的namespace提供了乙個輕量級的基於系統呼叫層面的虛擬化解決方案。相比傳統的使用 vmware,qemu,xen,kvm,hurd的虛擬 圖1所示 基於namespace的輕量級虛擬具有易使用,易管理,無需硬體虛擬化支援,低 成本等優點。圖 1.namespace又稱conta...