Linux核心模組編譯方法

2021-10-24 07:53:25 字數 1170 閱讀 8913

靜態編譯:靜態編譯即為將驅動直接編譯進核心 除錯完之後,採用該方法

動態編譯:動態編譯即為將驅動編譯成模組

這裡提供乙個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...