Linux内核模块编译涉及到几个基础概念:
.c
文件和相应的.h
头文件,实现模块的功能。.ko
(Kernel Object)文件。insmod
或modprobe
命令加载模块到内核。lsmod
查看已加载的模块,使用dmesg
查看模块输出的信息。以下是一个简单的内核模块示例:
hello.c
#include <linux/module.h> // Needed by all modules
#include <linux/kernel.h> // Needed for KERN_INFO
#include <linux/init.h> // Needed for the macros
static int __init hello_start(void)
{
printk(KERN_INFO "Loading hello module...
");
printk(KERN_INFO "Hello world
");
return 0;
}
static void __exit hello_end(void)
{
printk(KERN_INFO "Goodbye Mr.
");
}
module_init(hello_start);
module_exit(hello_end);
Makefile
obj-m += hello.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
sudo
命令提升权限。通过以上步骤,你可以编译并加载一个简单的Linux内核模块。在实际开发中,可能需要更复杂的代码和配置,但基本流程是相似的。
腾讯云数据库TDSQL训练营
腾讯云数据库TDSQL(PostgreSQL版)训练营
DB TALK 技术分享会
腾讯云数据库TDSQL训练营
云+社区沙龙online [国产数据库]
2022OpenCloudOS社区开放日
DB TALK 技术分享会
腾讯云数据库TDSQL训练营
云+社区技术沙龙[第19期]
第四期Techo TVP开发者峰会
领取专属 10元无门槛券
手把手带您无忧上云