核心模組程式設計--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…
模組載入: sudo insmod hello.ko 模組解除安裝: sudo rmmod hello.ko 在終端輸入 dmesg 可以檢視到模組裡的資訊。