如何爲內核模塊生成文件添加包含路徑?我想在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
如何爲內核模塊生成文件添加包含路徑?我想在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
-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。
你確定你在文件中正確指定了include嗎?
例如爲:
#include "inc/something.h"
代替
#include <inc/something.h>
你應該利用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。
希望這有助於!
這非常有用。閱讀較新的文檔,現在看來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
我用CFLAGS = inc取代了-Iinc,它也不起作用 – MOHAMED 2012-04-16 14:51:25
@MohamedKALLEL:是的,我弄錯了。我已經更新了我的答案。 – 2012-04-16 14:54:39
即使使用CPPFLAGS =「 - Iinc」也不起作用 – MOHAMED 2012-04-16 15:03:11