首页 > 代码库 > 01-构造和运行模块
01-构造和运行模块
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) modulesendif
lsmod hello.ko //加载模块
rmmod hello //卸载模块
dmesg //打印内核信息
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。