如何编译用于Linux Ubuntu的驱动程序/内核模块?

时间:2012-01-28 21:47:20

标签: linux ubuntu module driver kernel-module

只是为了扩展一些例子,这是问题所在: 鉴于以下来源:

/* 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文件相同的目录中输入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文件一样

我缺少什么,有什么想法吗?

提前致谢

1 个答案:

答案 0 :(得分:1)

确保Makefile中以'make'开头的行由制表符缩进。 这是'all:'下面的行,'clean:'下面的行应该以tab开头。