2014-04-21 117 views
0

您好我正在嘗試編寫'Hello World'內核模塊。 我寫了下面的C代碼: Module514.c內核模塊的Makefile

#include<linux/module.h> 
#include<linux/kernel.h> 
#include<linux/init.h> 


MODULE_LICENSE("GPL"); 
MODULE_AUTHOR("BMC") 
MODULE_DESCRIPTION(" My module]") 


static int __init module514(void){ 
    printk(KERN_INFO"Hello World"); 
    return 0; 
    } 

static void __exit module514_cleanup(void){ 
    printk(KERN_INFO"unloaded") 
    } 


    module_init(module514); 
    module_exit(module514_cleanup); 

然後創建下面的Makefile

obj-m += Module514.o 

all: 
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules 

clean: 
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean 

但是,當我給我做得到下面的消息。

make: Nothing to be done for `all'. 

我在做什麼錯。

+0

您可以發佈輸出「make -n」嗎?你的代碼也不會編譯,分號;失蹤 – Sasi

+0

@Sasi對'make -n'的迴應是一樣的「make:對'all'沒有任何要求」。感謝更正了代碼。 – BMC

回答

0

這裏的問題似乎是由我的Vim配置造成的。當我使用TAB縮進makefile時,空格被插入而不是TAB。一旦我用一個不同的編輯器糾正了這個問題,所有的文件都會發送。

PS:還需要使用大寫命令生成Makefile文件M = Makefile

+0

http://stackoverflow.com/questions/24709389/error-in-generating-ko-file-for-simple-hello-world-module-for-linux-kernel/31968848#31968848 這是很好的開始閱讀內核構建過程如上所述 – tsenapathy