將模塊編譯進內核

示例:將Add_Sub模塊編譯進內核

  1. 在內核源碼的driver下新建AddSub_Kconfig子目錄並將該模塊源碼放入該目錄

    can@ubuntu:~/tiny4412/linux-3.8_test/drivers$ tree AddSub_Kconfig/
    AddSub_Kconfig/
    |– Add_Sub.c
    |– Add_Sub.h
    `– test.c

    0 directories, 3 files

  2. 爲目錄創建Kconfig和Makefile文件,同時修改子目錄的父目錄中的Kconfig及Makefile文件,使得子目錄中的Kconig和Makefile文件能夠被引用
    AddSub_Kconfig目錄中的Kconfig文件

#
# Add_Sub confirguration
#
menu "Add_Sub"   #主菜單
comment "Add_Sub"
config CONFIG_ADD_SUB  #子菜單,添加Add_Sub模塊的功能
        boolean "ADD_SUB support"
        default n
#子菜單中,添加test模塊的功能,只有配置CONFIG_ADD_SUB選項時,該菜單纔會顯示
config CONFIG_TEST
        tristate "ADD_SUB test support"
        depends on CONFIG_ADD_SUB   #依賴CONFIG_ADD_SUB
        default n
endmenu  #主菜單結束

修改driver目錄下的Kconfig文件,在文件的末尾增加以下內容:

source “drivers/AddSub_Kconfig/Kconfig”

腳本中source表示引用新的Kconfig文件,參數爲文件的相對路徑名,同時爲了使AddSub和test模塊被編譯,需要在AddSub_Kconfig目錄下增加一個Makefile文件,文件如下

obj-$(CONFIG_ADD_SUB)+=AddSub.o
obj-$(CONFIG_TEST)+=test.o

變量CONFIG_ADD_SUB和CONFIG_TEST就是Kconfig文件中定義的變量,根據腳本配置得到
obj-y:構建模塊並編譯進內核
obj-n:不構建模塊
obj-m:單獨編譯模塊,不放入內核

同時修改drivers目錄下的Makefile,增加以下腳本

obj-$(Add_Sub)+=AddSub_Kconfig/

使得在內核編譯的時候能夠進入AddSub_Kconfig目錄中。

最終的目錄樹如下:

can@ubuntu:~/tiny4412/linux-3.8_test/drivers$ tree AddSub_Kconfig/
AddSub_Kconfig/
|– Add_Sub.c
|– Add_Sub.h
|– Kconfig
|– Makefile
`– test.c

0 directories, 5 files

3.進入內核代碼目錄中執行 make menuconfig命令
選擇Device Driver選項,進入即可配置

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