hello.c
#include <linux/module.h> #include <linux/init.h> #include <linux/kernel.h> MODULE_LICENSE("GPL"); static int hello_init(void) { printk(KERN_ALERT "hello_init"); return 0; } static void hello_exit(void) { printk(KERN_ALERT "hello_exit"); } //注册 module_init(hello_init); module_exit(hello_exit); MODULE_AUTHOR("heidsoft"); MODULE_DESCRIPTION("example.hello.module"); MODULE_ALIAS("example");
Makefile
#如果已经定义KERNELRELEASE,则说明从内核构建系统调用 #因此可利用其内建语句。 ifneq ($(KERNELRELEASE),) obj-m :=hello.o #否则,是直接从命令行调用的。 #这时要调用内核构造系统 else obj-m :=hello.o KERNELDIR ?= /lib/modules/$(shell uname -r)/build PWD := $(shell pwd) default: $(MAKE) -C $(KERNELDIR) M=$(PWD) modules endif
lsmod hello.ko //加载模块
rmmod hello //卸载模块
dmesg //打印内核信息
01-构造和运行模块
时间: 2024-10-17 04:50:27