我正在学习 Linux 内核编程。我正在尝试从多个文件构建我的模块。它构建并加载,但 dmesg 中没有消息。出了什么问题?
解决方案.c:
#include <linux/init.h>
#include <linux/module.h>
#include "checker.h"
static const char* msg = "Hello from my module!";
extern void call_me(const char*);
static int __init init(void)
{
printk(KERN_INFO "322\n");
call_me(msg);
printk(KERN_ALERT "After the function\n");
return 0;
}
static void __exit exitFromModule(void)
{
printk(KERN_ALERT "BYE\n");
return;
}
module_init(init);
module_exit(exitFromModule);
检查器.h:
#include <linux/module.h>
void call_me(const char* str);
检查器.c:
#include "checker.h" #include <linux/kernel.h>
void call_me(const char* str)
{
printk("<1>FROM CALL_ME!\n");
return;
}
生成文件:
CURRENT = $(shell uname -r)
KDIR = /lib/modules/$(CURRENT)/build
PWD = $(shell pwd)
DEST = /lib/modules/$(CURRENT)/misc
TARGET = solution
obj-m := $(TARGET).o
solution-objs := checker.o
all:
make -C $(KDIR) M=$(PWD) modules
clean:
make -C $(KDIR) M=$(PWD) clean
@rm -f *.o .*.cmd .*.flags *.mod.c *.order;
@rm -f .*.*.cmd *.symvers *~ *.*~ TODO.*
@rm -fR .tmp*
@rm -rf .tmp_versions
之后我开始制作并编译。但是在 insmod 之后 dmesg 中有消息。