使用两个源文件编译内核模块时出错

Error compiling kernel module with two source files

我正在尝试编译一个包含两个 .c 文件的内核模块。我的 Makefile 如下

module-y: dummy.o library.o  
obj-m += module.o

default:
    make -C /lib/modules/`uname -r`/build M=$(PWD) modules

当我运行这个我得到

cc    -c -o dummy.o dummy.c
dummy.c:3:24: fatal error: linux/init.h: No such file or directory

Makefile 似乎不知道现在在哪里可以找到头文件。

我曾尝试使用 CFLAGS 添加包含目录,但它们太多了,变得乏味且难以完成(还没成功)。

我想使用在使用单个 .c 文件时(神奇地)使用的包含目录生成这两个 .o 文件。在那种情况下一切正常。

使用两个源文件时如何修复包含目录?

我像下面这样编写了 Makefile,它起作用了:

ifneq ($(KERNELRELEASE),)
# kbuild part of makefile
obj-m  := module.o
module-y := library.o dummy.o

else
# normal makefile
KDIR ?= /lib/modules/`uname -r`/build

default:
        $(MAKE) -C $(KDIR) M=$$PWD modules
endif