0
2つの.cファイルを持つカーネルモジュールをコンパイルしようとしています。私はこれを実行すると私のMakefileが、私はMakefileのが今のヘッダーを検索する場所を知っていないようだ 2つのソースファイルを持つカーネルモジュールをコンパイル中にエラーが発生しました
cc -c -o dummy.o dummy.c
dummy.c:3:24: fatal error: linux/init.h: No such file or directory
を取得するには、次の
module-y: dummy.o library.o
obj-m += module.o
default:
make -C /lib/modules/`uname -r`/build M=$(PWD) modules
です。
私はCFLAGSを使用してインクルードディレクトリを追加しようとしましたが、とても面倒で難しくなりました。
単一の.cファイルを使用するときに(魔法のように)使用されるインクルードディレクトリを使用して、これらの2つの.oファイルを生成したいとします。その場合はすべて正常に動作します。
2つのソースファイルを使用するときにインクルードディレクトリを修正するにはどうすればよいですか?
あなたは '-I/init'またはそのようにコンパイルする必要はないのですか? –
私はそれを使用してそこに例を見ていない。少なくとも1つのソースの場合、必ずしも必須ではありません。 – JC1
このページ: 'https:// www.kernel.org/doc/Documentation/kbuild/modules.txt'は' kbuild'の公式文書です。カーネル用の外部モジュールを構築するための例を参考にしてください。特に ':='とそれに類するマクロ定義の種類 – user3629249