当前位置: 技术问答>linux和unix
内核HelloWorld,编译出错!!
来源: 互联网 发布时间:2016-01-05
本文导语: 如题: --------------------------------- /* * hello-1.c - The simplest kernel module. */ #include /* Needed by all modules */ #include /* Needed for KERN_ALERT */ int init_module(void) { printk("Hello world 1.n"); /* * A non 0 return m...
如题:
---------------------------------
/*
* hello-1.c - The simplest kernel module.
*/
#include /* Needed by all modules */
#include /* Needed for KERN_ALERT */
int init_module(void)
{
printk("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
有人碰到类似情况的么?小弟很菜,请大家帮帮忙
---------------------------------
/*
* hello-1.c - The simplest kernel module.
*/
#include /* Needed by all modules */
#include /* Needed for KERN_ALERT */
int init_module(void)
{
printk("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了。
用这个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
all:
[这里有一个tab] make -C $(KERNEL_DIR) M=$(PWD) modules
我倒是有个msn,但是一般不开。
我的邮箱heyg@ghtchina.com