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);
/**/ /**************************************************/
#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
/**/ /**************************************************/
# 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上面`