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
endif
obj-m := hello.o表示編譯後生成hello.o模組。
$(kdir) 指定了核心原始碼的路徑,「m=」表示這是個外部模組,m=$(pwd) 指定了該模組檔案所在的路徑。
注: makefile預定義了$(pwd)變數,此處可以不必重複定義。
如果是多個原始檔編譯出乙個模組,假設模組名是test.ko,那麼源檔名不能有test.c
obj-m := test.o
test-objs := file1.o file2.o file3.o
kdir := /lib/modules/$(shell uname -r)/build
#pwd := $(shell pwd)
all:
make -c $(kdir) m=$(pwd) modules
clean:
make -c $(kdir) m=$(pwd) clean
例如:
#include
#include
static int hello_init(void)
static void hello_exit(void)
module_init(hello_init);
module_exit(hello_exit);
module_license("gpl");
makefile:
obj-m:=test.o
kdir =/usr/src/linux-2.6.23
pwd:=$(shell pwd)
all:
make -c $(kdir) m=$(pwd) modules
clean:
make -c $(kdir) m=$(pwd) clean
核心模組Makefile
前些天寫乙個驅動模組。竟然寫核心模組makefile時出了問題,於是將其總結下來,下次再用時拿過來改下就行了。general purpose makefile for linux kernel module by guoqingbo kern dir home gqb development lin...
核心模組 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...