我目前正在尝试开发一个简单的Linux内核模块。它应该只记录一些东西,它是从互联网上一比一复制的。
我有以下文件:lkm_example.c
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Robert W. Oliver II");
MODULE_DESCRIPTION("A simple example Linux module.");
MODULE_VERSION("0.01");
static int __init lkm_example_init(void) {
printk(KERN_INFO "Hello, World!\n");
return 0;
}
static void __exit lkm_example_exit(void) {
printk(KERN_INFO "Goodbye, World!\n");
}
module_init(lkm_example_init);
module_exit(lkm_example_exit);
Run Code Online (Sandbox Code Playgroud)
生成文件:
obj-m += lkm_example.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(shell pwd) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(shell pwd) clean
Run Code Online (Sandbox Code Playgroud)
我还做了以下工作:
sudo apt-get install build-essential linux-headers-`uname -r`
Run Code Online (Sandbox Code Playgroud)
对于编译我使用:
stbau@kernel-dev-vm:~/src/lkm_example$ sudo make
make -C /lib/modules/5.13.0-39-generic/build M=/home/stbau/src/lkm_example modules
make[1]: …Run Code Online (Sandbox Code Playgroud)