如何为内核模块makefile添加包含路径

时间:2012-04-16 14:39:00

标签: c makefile linux-kernel

如何为内核模块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

3 个答案:

答案 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标志,但是对于完全不相关的东西。