1.
#如果已定义KERNELRELEASE,则说明是从内核构造系统调用的 #因此可以利用其内建语句 ifneq ($(KERNELRELEASE),) obj-m := helloworld.o #否则,是直接从命令行调用的, #这时要调用内核构造系统 else # KERNELDIR ?= /lib/modules/$(shell unname -r)/build KERNELDIR ?= /opt/EmbedSky/linux-2.6.30.4 PWD := $(shell pwd) default: $(MAKE) -C $(KERNELDIR) M=$(PWD) modules endif
2.helloworld.c
#include <linux/init.h> #include <linux/module.h> MODULE_LICENSE("Dual BSD/GPL"); static int hello_init(void) { printk(KERN_ALERT "Hello, world\n"); return 0; } static void hello_exit(void) { printk(KERN_ALERT "Goodbye, cruel world\n"); } module_init(hello_init); module_exit(hello_exit);