靜態編譯:靜態編譯即為將驅動直接編譯進核心 除錯完之後,採用該方法
動態編譯:動態編譯即為將驅動編譯成模組
這裡提供乙個makefile,動態編譯區分單檔案與多問見,詳細見makefile內容:
#obj-m = demo.o 單檔案
obj-m = demo.o
demo-objs =
1.o 2.o 3.o
pwd :
= $(shell pwd)
kdir:
=/lib/modules/$(shell uname -r)
/build/
all:
make -c $(kdir) m=$(pwd) modules
clean:
make -c $(kdir) m=$(pwd) clean
三、靜態編譯
這裡先了解kconfig和makefile的作用
kconfig:對應核心模組的配置選單。
makefile:對應核心模組的編譯選項。
linux核心編譯過程:是根據配置裁剪的結果配合makefile完成核心編譯。
編譯步驟:
1 原始檔放到核心相應的目錄下,我們這裡是乙個字元裝置驅動,所以把原始檔放到了/lib/modules/2.6.32-358.el6.i686/build/drivers/char
2.kconfig:新增乙個配置選項選單
config demo /* makefile中編譯可變選項中巨集的名字,作用就是定義乙個可以選擇的變數 /
tristate 「hello driver added by dong」 / make menuconfig 選單介面顯示的資訊,tristate 提供y m n三種選項 /
default n / 選單選項預設為n /
help
test for adding driver to menuconfig. / 一些幫助資訊,寫不寫沒有關係 */
修改makefile,新增如下內容:
obj-$(config_demo)
+= demo.o
4.make menuconfig 就可以找到我們剛才新增的模組,預設是y,儲存退出,之後即可在.config中檢視到新增的新模組。
5. make uimage:編譯到核心內部
Linux核心模組編譯
data mining linux核心模組是一種可被動態載入和解除安裝的可執行程式。通過核心模組可以擴充套件核心功能,核心模組通常用於裝置驅動 檔案系統等。如果沒有核心模組,需要向核心新增功能就需要自發 重新編譯核心 安裝新核心等步驟。核心空間中不止乙個程式試圖訪問驅動程式模組,導致乙個核心塊在沒有...
Linux編譯核心模組
核心模組即驅動的編譯方式 1 本地編譯 2 交叉編譯 makefile主要寫法 本地編譯 obj m hello.o kdir lib modules shell uname r build pwd shell pwd all make c kdir m pwd modules clean rm o...
linux核心模組編譯
1 makefile編寫 ifneq kernelrelease obj m mytest.o mytest objs file1.o file2.o file3.o else kdir lib modules shell uname r build pwd shell pwd default ma...