内核模块使文件出错

时间:2019-05-22 20:15:04

标签: c kernel kernel-module archlinux

所以我试图在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);

1 个答案:

答案 0 :(得分:0)

您的路径似乎不正确。请检查您的源文件的路径。您将$SUBDIRS变量用于外部模块所在的路径。因此,如果您的模块位于源文件中,则可以将其删除。

obj-m   += Test.o

all:
    make -C ${KDIR} modules

clean:
    make -C ${KDIR} clean

您可以找到其他信息here

您是否已安装内核源代码?否则,您的系统将不包含任何源。