#include <linux/module.h>
#include <linux/init.h>
MODULE_LICENSE("GPL");
MODULE_AUTHOR("WHY");
MODULE_DESCRIPTION("Hello world module");
static int __init hello_init(void)
{
printk(KERN_ERR "hello world!\n");
return 0;
}
static void __exit hello_exit(void)
{
printk(KERN_EMERG "hello exit!\n");
}
module_init(hello_init);
module_exit(hello_exit);
下面是makefil的编写
ifneq ($(KERNELRELEASE),)
obj-m :=hello.o
else
KDIR:= /home/whyzl/linux-2.6.37.4 //注意是自己用的编译内核的路径
all:
make -C $(KDIR) M=$(PWD) modules ARCH=arm CROSS_COMPILE=arm-linux-
clean:
rm -f *.ko *.o *.mod.o *.mod.c .symvers
endif
上述命令首先改变目录到-C选项指定的位置(即内核源代码目录),其中保存有内核顶层的makefile文件。M=选项让该makefile在构造modules目标之前返回到模块源代码目录。然后,modules目标指向obj-m变量中设定的模块。