【发布时间】:2016-03-25 23:00:39
【问题描述】:
我正在尝试编译具有两个 .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 文件。在这种情况下一切正常。
使用两个源文件时如何修复包含目录?
【问题讨论】:
-
你不需要用
-I./init之类的编译吗? -
我还没有看到任何使用它的例子。至少对于单一来源的情况,绝对不需要。
-
本页:
https://www.kernel.org/doc/Documentation/kbuild/modules.txt是kbuild上的官方文档。建议按照那里的示例为内核构建外部模块。特别注意:=和类似的宏定义类型的使用
标签: c linux makefile linux-kernel kernel-module