我正在尝试编译一个包含两个.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文件时(神奇地)使用的include目录生成这两个.o文件。在这种情况下一切正常。
如何在使用两个源文件时修复包含目录?
答案 0 :(得分:1)
我像下面这样写了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