hello.c
#include<linux/module.h> #include<linux/init.h> #include<linux/fs.h> #include<linux/miscdevice.h> int hello_init(void) { // printk(KERN_EMERG"printk level:%s hello world!\n",KERN_EMERG); printk(KERN_ALERT"printk level:%s hello world!\n",KERN_ALERT); printk(KERN_CRIT"printk level:%s hello world!\n",KERN_CRIT); printk(KERN_ERR"printk level:%s hello world!\n",KERN_ERR); printk(KERN_WARNING"printk level:%s hello world!\n",KERN_WARNING); printk(KERN_NOTICE"printk level:%s hello world!\n",KERN_NOTICE); printk(KERN_INFO"printk level:%s hello world!\n",KERN_INFO); printk(KERN_DEBUG"printk level:%s hello world!\n",KERN_DEBUG); return 0; } void hello_exit(void) { printk(KERN_EMERG"printk level:%s goodbye world!\n",KERN_EMERG); printk(KERN_ALERT"printk level:%s goodbye world!\n",KERN_ALERT); printk(KERN_CRIT"printk level:%s goodbye world!\n",KERN_CRIT); printk(KERN_ERR"printk level:%s goodbye world!\n",KERN_ERR); printk(KERN_WARNING"printk level:%s goodbye world!\n",KERN_WARNING); printk(KERN_NOTICE"printk level:%s goodbye world!\n",KERN_NOTICE); printk(KERN_INFO"printk level:%s goodbye world!\n",KERN_INFO); printk(KERN_DEBUG"printk level:%s goodbye world!\n",KERN_DEBUG); } module_init(hello_init); module_exit(hello_exit); MODULE_LICENSE("GPL"); //MODULE_ALTHOR("YXD"); //MODULE_DESCRIPTION("A simple module");
Makefile1
#Makefile ifneq ($(KERNELRELEASE),) obj-m :=hello.o #KERNELDIR:=/opt/FriendlyARM/mini2440/linux-2.6.32.2 else PWD:=$(shell pwd) modules: $(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules #modules_install: # $(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install clean: rm -rf *.o *~core .depend .*.cmd *.ko *.mod.c .tmp_versions endif #all: # make -C /opt/FriendlyARM/mini2440/linux-2.6.32.2/build SUBDIRS=$(PWD) modules #clean: # make -C /opt/FriendlyARM/mini2440/linux-2.6.32.2/build SUBDIRS=$(PWD) clean
Makefile2
原文:http://www.cnblogs.com/weiyublog/p/5301270.html