Linux核心驅動模組編譯
阿新 • • 發佈:2019-02-11
核心模組的構建有兩種主要方式:放在核心原始碼樹中或者放在核心程式碼外。
一、放在核心原始碼樹中
在核心的drivers/資料夾下建立好驅動模組資料夾,並完成驅動檔案之後,需要編輯和修改相應的Kconfig和Makefile檔案,使得該模組可以配置到核心中並進行編譯。
1. 在驅動模組資料夾下新增Kconfig和Makefile檔案,檔案內容如下(這裡假設驅動模組資料夾為module,裡面包含module.c和module.h檔案)
Kconfig檔案:
config MODULE tristate “test driver” default y help This is a test driver.
Makefile檔案:
obj-$(CONFIG_MODULE) += module.o
2. 修改arch/arm/Kconfig和drivers/Kconfig檔案,在menu “Device Drivers”和endmenu之間新增一行:
source "drivers/module/Kconfig"
3. 修改drivers/Makefile檔案,在檔案尾新增一行:
obj-$(CONFIG_MODULE) += module/
4. 配置核心編譯選項
make menuconfig
5. 編譯核心
make
二、放在核心程式碼外
與在核心內構建的最大差別在於構建過程,當模組在核心原始碼樹外圍時,必須告訴make如何找到核心原始碼檔案和基礎Makefile檔案,即在上述Makefile基礎上加上如下程式碼:
make -C /kernel/source/location SUBDIRS=$PWD modules
至此完成了新增驅動模組的編譯。在後續的文章中會介紹Makefile和Kconfig檔案的語法規則。