前些天寫乙個驅動模組。竟然寫核心模組makefile時出了問題,於是將其總結下來,下次再用時拿過來改下就行了。
#general purpose makefile for linux kernel module by guoqingbo
kern_dir = /home/gqb/development/linux-kernel-2.6.37
#kern_dir = /usr/src/$(shell uname -r)
#kern_dir = /lib/modules/$(shell uname -r)/build
all:
make -c $(kern_dir) m=$(shell pwd) modules
clean:
make -c $(kern_dir) m=$(shell pwd) modules clean
rm -rf modules.order
obj-m += ***.o
第3行kern_dir表示核心原始碼目錄,這種方式適用於嵌入式開發的交叉編譯,kern_dir目錄中包含了核心驅動模組所需要的各種標頭檔案及依賴。若在pc機開發核心模組則應使用第4、5行的寫法。
第8行中-c表示 指定進入指定的目錄即kern_dir,是核心源**目錄,呼叫該目錄頂層下的makefile,目標為modules。
m=$(shell pwd)選項讓該makefile在構造modules目標之前返回到模組源**目錄並在當前目錄生成obj-m指定的***.o目標模組。
clean這個目標表示將模組清理掉
obj-m += ***.o即指定當前目錄要生成的目標模組,然後modules目標指向obj-m變數中設定的模組
核心模組Makefile
ifneq kernelrelease obj m hello.o else kdir lib modules shell uname r build pwd shell pwd all make c kdir m pwd modules clean make c kdir m pwd clean ...
核心模組 Makefile
寫乙個核心模組的makefile模板記錄 ifneq kernelrelease obj m abc.o else kdir lib modules shell uname r build pwd shell pwd all make c kdir m pwd modules clean rm o ...
核心模組載入錯誤 Makefile
載入核心模組錯誤 insmod error inserting globalvar.ko 1 device or resource busy 問題描述 裝置號跟已有的裝置衝突了 解決方法 檢視已有裝置號 cat proc devices 修正在程式中設定的裝置號,或者改為自動分配 錯誤2 insmo...