hello.c代碼
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static char *whom="world";
static int howmany = 1 ;
module_param(howmany, int ,S_IRUGO);
module_param(whom, charp , S_IRUGO);
static int hello_init(void)
{
int i;
for(i=0;i<howmany;i++)
{
printk(KERN_ALERT"Hello,%s ",whom);
}
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT"Goodbye,cruel world ");
}
module_init(hello_init);
module_exit(hello_exit);
/**************************************************/
Makefile
# If KERNELRELEASE is defined, we've been invoked from the
# kernel build system and can use its language.
ifneq ($(KERNELRELEASE),)
obj-m := hello.o
# Otherwise we were called directly from the command
# line; invoke the kernel build system.
else
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
clean:
endif
/**************************************************/
在linux2.6的內核下
make -C ~/kernel-2.6 M=`pwd` modules
-C的後面~是kernel的源代碼路徑,注意後面pwd,不是單引'是tab上面`