1. 程式人生 > >核心模組程式設計--Makefile不是makefile

核心模組程式設計--Makefile不是makefile

今天編寫了一個簡單核心模組,載入進核心,步驟很簡單,但是當makefile寫完之後make時老過不去,螢幕

上方顯示:

make[1]: 正在進入目錄 /usr/src/linux-headers-2.6.35-22-generic' scripts/Makefile.build:44: /home/lxy/kernel/Makefile: 沒有那個檔案或目錄 make[2]: *** 沒有規則可以建立目標“/home/lxy/kernel/Makefile”。 停止。 make[1]: *** [_module_/home/lxy/kernel] 錯誤 2 make[1]:正在離開目錄/usr/src/linux-headers-2.6.35-22-generic’ make: *** [all] 錯誤 2

發現這個錯誤後,剛開始還以為是路徑問題,找了半天沒有進展,最後上網查了一下,我暈,僅僅一個字母問題。只需把原來小寫的makefile改為Makefile就行了,我暈啊!!!

程式碼如下(hello.c): #include #include #include

MODULE_LICENSE(“Dual BSD/GPL”); //宣告核心模組的許可許可權,若不宣告,模組被載入時將收到核心被 汙染的警告。

static int hello_init(void) { printk(KERN_ALERT “hello,I am lanxiangyu!\n”); return 0; }

static void hello_exit(void) { printk(KERN_ALERT “goodbye,kernel!\n”); }

module_init(hello_init); module_exit(hello_exit);

MODULE_AUTHOR(“LXY”); //作者 MODULE_DESCRIPTION(“This is a simple example\n”); //模組描述 MODULE_ALIAS(“A simple example”); //別名

Makefile如下:

obj-m += hello.o #generate the path CURRENT_PATH:=KaTeX parse error: Expected 'EOF', got '#' at position 13: (shell pwd) #̲the current ker…

(shell uname -r) #the absolute path LINUX_KERNEL_PATH:=/usr/src/linux-headers-$(LINUX_KERNEL) #complie object all: make -C (LINUXKERNELPATH)M=(LINUX_KERNEL_PATH) M=(CURRENT_PATH) modules #clean clean: make -C (LINUXKERNELPATH)M=(LINUX_KERNEL_PATH) M=(CURRENT_PATH) clean

模組載入: sudo insmod hello.ko 模組解除安裝: sudo rmmod hello.ko 在終端輸入 dmesg 可以檢視到模組裡的資訊。