日期:2014-05-16  浏览次数:20681 次

我是个新手,请问个编译驱动的问题
我的Linux是CentOS 5.3,是装在虚拟机上的。
这是从书上抄来的:
一、hello.c
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void) {
printk("<1> Hello world!\n");
return 0;
}
static void hello_exit(void) {
printk("<1> Bye, cruel world\n");
}
module_init(hello_init);
module_exit(hello_exit);

二、Makefile
  obj-m :=hello.o
  KDIR :=/lib/modules/$(shell uname -r)/build
  PWD :=$(shell pwd)
default:
  $(MAKE) -C $(KDIR) M=$(PWD) modules

我运行make时,出现
meke:***/lib/modules/2.6.18-128.el5/build:No such fiule or directory. Stop.

可是我在/lib/modules/2.6.18-128.el5/有个build的链接文件,
请问我错在哪了?是不是内核没有编译?如果没有编译,该怎么做呢?
(我也这样做过:yum install kernel,可是错误还是一样的)

------解决方案--------------------
可能是kernel-devel没有
比如我的
zengming@linux-008:~/workspace/s3c-linux> uname -r
2.6.37.6-0.20-desktop
zengming@linux-008:~/workspace/s3c-linux> ls /lib/modules/2.6.37.6-0.20-desktop/build
include Makefile Module.base Module.supported Module.symvers scripts

ls下,看看build指向的文件夹是否是空的。