我正在尝试编译一个包含两个 .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
关于c - 使用两个源文件编译内核模块时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36229438/