如何为内核模块makefile添加包含路径?我想在test_module.c中包含“test_kernel.h”。 “test_kernel.h”位于其他目录“inc”中 我在Makefile中尝试了以下解决方案,但它不起作用:
obj-m += test_module.o
test_module:
$(MAKE) -C "$(LINUX_DIR)" -Iinc $(MAKE_OPTS) modules
答案 0 :(得分:13)
您应该在EXTRA_CFLAGS
中使用Makefile
。尝试以下几点:
obj-m += test_module.o
EXTRA_CFLAGS=-I$(PWD)/inc
test_module:
$(MAKE) -C "$(LINUX_DIR)" $(MAKE_OPTS) modules
请参阅第3.7节Compilation Flags
部分here
希望这有帮助!
答案 1 :(得分:1)
您确定在文件中正确指定了包含吗?
e.g:
#include "inc/something.h"
而不是
#include <inc/something.h>
答案 2 :(得分:0)
-I
是GCC标志,而不是Make标志。 1 你需要将一个变量传递给你的“sub”Make过程;也许是这样的:
$(MAKE) -C "$(LINUX_DIR)" CPPFLAGS="-Iinc" $(MAKE_OPTS) modules
其中CPPFLAGS
是隐式规则中使用的标准Make变量。请随意使用您自己的变量,并确保在子品牌中正确使用它。
Make手册提供了有关在Make实例之间传递变量的更多详细信息:http://www.gnu.org/software/make/manual/make.html#Variables_002fRecursion。
<小时/> 1.实际上,它也是一个Make标志,但是对于完全不相关的东西。