如何在Linux Ubuntu中编译驱动程序/内核模块?
问题描述:
只是为了一些例子扩大,现在的问题是: 鉴于以下来源:如何在Linux Ubuntu中编译驱动程序/内核模块?
/* hello.c */
#include <linux/module.h>
#include <linux/kernel.h>
int init_module(void)
{
printk(KERN_INFO "Hello world\n");
return 0;
}
void cleanup_module(void)
{
printk(KERN_INFO "Goodbye world\n");
}
/* end of hello.c */
和下面的Makefile:
obj-m += hello.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,而在相同的目录源和制作文件,我得到的消息:'没有什么可以为'全部' 编译似乎停在这里,没有目标文件被创建。
现在只是用于测试,我尝试了新的简单的Makefile: TARGET:=你好 $ {TARGET}的.o:$ {TARGET} .C
运行make给了我新的错误:hello.c中:1:致命错误:linux/module.h:没有这样的文件或目录。
然而,这文件的文件夹中可以找到:
/usr/src/linux-headers-2.6.35-22/include/linux
以及在
/usr/src/linux-headers-2.6.35-22-generic/include/linux
因为是kernel.h当文件
我缺少什么,什么想法?
在此先感谢
答
确保在Makefile与“制作”开始的行由制表符缩进。 这就是'all:'下方的一行,'clean:'下面的一行应该以标签开头。
您至少需要内核源代码才能获取所需的头文件... – 2012-01-28 21:50:12
注意:完整的源代码不需要;构建环境(包括Makefiles,Kconfigs,scripts /和某些目录中的.h文件)就足够了。 – 2012-01-28 23:35:37
尝试:http://fsmsh.com/1238 – 2012-02-13 06:02:51