1. 程式人生 > >Linux核心驅動模組編譯

Linux核心驅動模組編譯

核心模組的構建有兩種主要方式:放在核心原始碼樹中或者放在核心程式碼外。

一、放在核心原始碼樹中

在核心的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檔案的語法規則。