linux核心中的 config

2021-07-07 09:15:42 字數 902 閱讀 2469

經過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...