所以我试图在arch linux中构建一个简单的第一个内核模块,但是我的make文件出现错误
我试图找到我的uname -r的内核头文件,但是没有运气
obj-m += Test.c
KIDR = /usr/lib/modules/5.1.3-arch1-1-ARCH
all:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
clean:
echo DONE
我的错误是:
prompt$ make
make -C SUBDIRS=/home/johndoe/KernelModule modules
make[1]: *** SUBDIRS=/home/johndoe/KernelModule: No such file or directory. Stop.
make: *** [Makefile:4: all] Error 2
我的代码是:
#include <linux/init.h>
#include <linux/module.h>
static int entry_func(void){
printk("ENTERED");
return 0;
}
static exit_func(void){
printk("EXITING");
}
module_init(entry_func);
module_exit(exit_func);
答案 0 :(得分:0)
您的路径似乎不正确。请检查您的源文件的路径。您将$SUBDIRS
变量用于外部模块所在的路径。因此,如果您的模块位于源文件中,则可以将其删除。
obj-m += Test.o
all:
make -C ${KDIR} modules
clean:
make -C ${KDIR} clean
您可以找到其他信息here。
您是否已安装内核源代码?否则,您的系统将不包含任何源。