2014-04-21 91 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