2012-04-16 77 views
8

如何爲內核模塊生成文件添加包含路徑?我想在test_module.c中包含「test_kernel.h」。在「test_kernel.h」存在於其他目錄下的「公司」 我在我的Makefile以下解決方案嘗試,但它不工作:如何爲內核模塊生成文件添加包含路徑

obj-m += test_module.o 

test_module: 
    $(MAKE) -C "$(LINUX_DIR)" -Iinc $(MAKE_OPTS) modules 

回答

0

-I是GCC標誌,而不是一個製作標誌。 您需要將一個變量傳遞給您的「子」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標誌,但對於完全不相關的東西。

+0

我用CFLAGS = inc取代了-Iinc,它也不起作用 – MOHAMED 2012-04-16 14:51:25

+0

@MohamedKALLEL:是的,我弄錯了。我已經更新了我的答案。 – 2012-04-16 14:54:39

+0

即使使用CPPFLAGS =「 - Iinc」也不起作用 – MOHAMED 2012-04-16 15:03:11

0

你確定你在文件中正確指定了include嗎?

例如爲:

#include "inc/something.h" 

代替

#include <inc/something.h> 
12

你應該利用EXTRA_CFLAGSMakefile。嘗試在這些線路上的東西:

obj-m += test_module.o 
EXTRA_CFLAGS=-I$(PWD)/inc 

test_module: 
    $(MAKE) -C "$(LINUX_DIR)" $(MAKE_OPTS) modules 

見第3.7節Compilation Flagshere
希望這有助於!

+0

這非常有用。閱讀較新的文檔,現在看來EXTRA_CFLAGS已被棄用。您可以使用ccflags-y = -I $(PWD)/ inc代替EXTRA_CFLAGS。 檢查第3.7節[此處](https://www.kernel.org/doc/Documentation/kbuild/makefiles.txt)。 – 2014-10-27 17:22:53

相關問題