Linux内核模块的编译
1. 参考
重要参考,介绍了proc
关于printk的几个等级:参考
实验(redhat需要安装kernel-devel,其它的也类似)
#include<linux/module.h> #include<linux/kernel.h> #include<linux/init.h> static int __init lkp_init(void) { printk("<1>Hello, World! from the kernel space...\n"); return 0; } static void __exit lkp_cleanup(void) { printk("<1>Good Bye, World! leaving kernel space...\n"); } module_init(lkp_init); // 注册模块 module_exit(lkp_cleanup); // 注销模块 MODULE_LICENSE("GPL"); //告诉内核该模块具有GNU公共许可证
Makefile
# Makefile 4.0 obj-m := testKernel.o CURRENT_PATH := $(shell pwd) LINUX_KERNEL := $(shell uname -r) #LINUX_KERNEL_PATH := /usr/src/linux-headers-$(LINUX_KERNEL) # ubuntu LINUX_KERNEL_PATH := /lib/modules/$(LINUX_KERNEL)/build # redhat all: make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) modules clean: make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) clean

浙公网安备 33010602011771号