内核HelloWorld,编译出错!!
如题:
---------------------------------
/*
* hello-1.c - The simplest kernel module.
*/
#include <linux/module.h> /* Needed by all modules */
#include <linux/kernel.h> /* Needed for KERN_ALERT */
int init_module(void)
{
printk( " <1> Hello world 1.\n ");
/*
* A non 0 return means init_module failed; module can 't be loaded.
*/
return 0;
}
void cleanup_module(void)
{
printk(KERN_ALERT "Goodbye world 1.\n ");
}
---------------------
makefile:
obj-m += hello-1.o
---------------------
执行:
make -C /lib/modules/`uname -r`/build SUBDIRS=$PWD modules
make: Entering directory `/usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18.i686 '
Building modules, stage 2.
MODPOST
make: Leaving directory `/usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18.i686 '
--------------------------------
如上面的 信息,本来应该出现编译好的文件hello-1.o,但编译失败了 ,出现了一个Module.symvers空文件。
我的系统是FC5,自己升级了内核,2.6.18
有人碰到类似情况的么?小弟很菜,请大家帮帮忙
------解决方案--------------------不用包含/usr/include/linux/version.h吧
用这个Makefile:
obj-m := hello.o
KERNEL_DIR:= /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
all:
make -C $(KERNEL_DIR) M=$(PWD) modules
clean:
rm *.o *.ko
然后make all就OK了。
------解决方案--------------------是不是少了“tab”?
all:
[这里有一个tab] make -C $(KERNEL_DIR) M=$(PWD) modules
我倒是有个msn,但是一般不开。
我的邮箱heyg@ghtchina.com