2012-04-16 4 views
8

カーネルモジュールのメイクファイルにインクルードパスを追加するにはどうすればよいですか?私は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

-I GCCフラグではなく、メイクフラグです。 "サブ"メイクプロセスに変数を渡す必要があります。おそらくこのような何か:

$(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

-IincをCFLAGS = incに置き換えてもうまくいきません。 – MOHAMED

+0

@MohamedKALLEL:はい、少し間違っています。私は私の答えを更新しました。 –

+0

でもCPPFLAGS = " - Iinc"は機能しません。 – MOHAMED

0

ファイルにインクルードを正しく指定してもよろしいですか?

例えば:代わりに、あなたはあなたのMakefileEXTRA_CFLAGSの使用をしなければならない

#include <inc/something.h> 
12

#include "inc/something.h" 

。これらの行に何かを試してみてください:

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

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

は、セクション3.7 Compilation Flagsセクションhereを参照してください。
これが役立つことを願っています!

+0

これは非常に便利です。新しい文書を読むと、EXTRA_CFLAGSは廃止されたようです。 EXTRA_CFLAGSの代わりにccflags-y = -I $(PWD)/ incを使用することができます。 セクション3.7 [ここ](https://www.kernel.org/doc/Documentation/kbuild/makefiles.txt)を確認してください。 –

関連する問題