2011-05-23 Kconfig 與makefile

Kconfig 是make menuconfig 的主要文件.(相關語法不作討論).在Kconfig 裏面加入選項後,在menuconfig 選擇後就可以在內核的根目錄的隱藏文件.config裏面看到.頂層的Makefile文件讀取 .config文件的內容,並總體上負責build內核和模塊。

 

假設想把自己寫的一個flash的驅動程序加載到工程中,而且能夠通過menuconfig配置內核時選擇該驅動該怎麼辦呢?可以分三步:

  第一:將你寫的flashtest.c 文件添加到/driver/mtd/maps/ 目錄下。

  第二:修改/driver/mtd/maps目錄下的kconfig文件:

        config MTD_flashtest

             tristate “ap71 flash"

         這樣當make menuconfig時 ,將會出現 ap71 flash選項。

 第三:修改該目錄下makefile文件。

       添加如下內容:obj-$(CONFIG_MTD_flashtest)       += flashtest.o

 這樣,當你運行make menucofnig時,你將發現ap71 flash選項,如果你選擇了此項。該選擇就會保存在.config文件中。當你編譯內核時,將會讀取.config文件,當發現ap71 flash 選項爲yes 時,系統在調用/driver/mtd/maps/下的makefile時,將會把 flashtest.o 加入到內核中。即可達到你的目的

 

所以也有很多makefile文件這樣寫:

obj-y       += flashtest.o

這樣就不用根據.config文件裏面的配置了,直接是選擇.

在將驅動放在內核外的文件夾,不用編譯進內核,直接

KERNELDIR = ~/eLDK/kernel/src

PWD := $(shell pwd)

obj-m := m1-ts.o

modules:

 $(MAKE) -C $(KERNELDIR) M=$(PWD) modules

 cp m1-ts.ko ~/eLDK/workspace/lRootFS/drv/

而在/home/cai/eLDK/kernel/src/arch/arm/mach-softwinner中makefile:

obj-y += ../../../../../drivers/system/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章