首页 > 代码库 > 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 //打印内核信息