本文基于https://blog.youkuaiyun.com/u013280091/article/details/103575050
hello.c
#include <linux/init.h>
#include <linux/module.h>
static int __init hello_init(void)
{
printk (KERN_ERR "hello world enter!\n");
return 0;
}
module_init(hello_init);
static void __exit hello_exit(void)
{
printk (KERN_INFO "hello world exit!\n");
}
module_exit(hello_exit);
MODULE_AUTHOR("zy");
MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("A simple hello module");
//MOUDLE_ALIAS("a siplest module");
Makefile
SOURCE_TREE=/usr/src/linux-4.0.4
MOD_NAME=hello
obj-m := $(MOD_NAME).o
all:
$(MAKE) -C $(SOURCE_TREE) M=$(PWD) modules
clean:
rm -rf *.o *.mod.c $(MOD_NAME).ko Module.symvers.order .*.cmd .tmp_versions
编译后生成hello.ko文件
加载hello.ko :insmod hlello.ko
卸载hello.ko:rmmod hello.ko
注:如果不能看到打印信息,可通过dmesg查看内核打印信息
本文介绍了一个简单的Linux模块编程示例,通过创建并编译hello.c源文件,生成可用于内核的hello.ko模块。该模块在加载和卸载时分别打印进入和退出信息,展示了Linux模块的基本生命周期。
910

被折叠的 条评论
为什么被折叠?



