linux 最简单内核模块
#include <linux/init.h> #include <linux/module.h> static int hello_init(void) { printk("Hello,world Insmod\n"); } static void hello_exit(void) { printk("hello exit"); } module_init(hello_init); module_exit(hello_exit); MODULE_AUTHOR("lyd"); MODULE_DESCRLPTION("Kernel: hello,world"); MODULE_LICENSE("GPL");
CURRENT = $(shell uname -r ) KERNEL_TARGET=hello_kernel MODULE_NAME :=$(KERNEL_TARGET) MODULE_SUF=.ko INCLUDE=-I/usr/src/kernels/$(CURRENT) PWD:=$(shell pwd) OUTPUT=$(PWD)/ KDIR=/lib/modules/$(CURRENT)/build all: make -C $(KDIR) INCLUDE=$(INCLUDE) M=$(PWD) modules strip --strip-debug $(KERNEL_TARGET)$(MODULE_SUF) clean: make -C $(KDIR) M=$(PWD) clean .PHONY: modules clean
make modules clean //清理
make 出不来.ko文件
之前百思不得其解,有朋友说是因为之前没有编译过,OK,哥编译一下,
问题在这里,obj-m: =test.o,少掉了,一个“=”,导致错误
编译完成之后能够看到模块文件:
$sudo insmod ./hello.ko #加载
$sudo rmmod hello #删除 或者 sudo rmmod ./hello.ko
中科方德下面编译通过
浙公网安备 33010602011771号