Linux内核学习笔记 -05 Linux “Hello Word” 模块的插入与删除

编写linux模块时,要首先编写.c文件,编写属于自己的makefile文件,之后使用make命令对.c文件进行编译,生成.ko文件

.ko文件就是最后所需要的模块,操作就是对它进行插入/删除。

#include <unistd.h>:  该头文件主要是对系统调用的,不可直接使用

#include <linux/init.h>: 包括init/exit函数

#include <linux/kernel.h>

#include <linux/module.h>: 添加linux模块,支持内核模块的机制

printk:LINUX_KERNEL_PATH:=/usr/src/linux-headers-$(LINUX_KERNEL)
功能与printf类似,二者接口实际上是完全一样的。但是printk可以支持消息的打印级别。一般printk最低的一级是调试信息,最高的一级是重要的,可能是系统奔溃的信息。使用尖括号<>指定消息打印的级别。

book@100ask:~/Mooc$ cat helloworld.c 
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>

//linux entry functions
static int __init lkm_init(void)
{
	printk("Hello World!\n");
	return 0;
}

static void __exit lkm_exit(void)
{
	printk("Goodbye!\n");
}

module_init(lkm_init); //entry point
module_exit(lkm_exit); //exit point

MODULE_LICENSE("GPL");

Makefile文件的第一个字母必须大写,这样后面才能够找到进行正确的编译

obj-m:=helloworld.o

猜你喜欢

转载自blog.csdn.net/f2157120/article/details/107434910