私は、makefile を使用してツリー ソース ファイルを含めるようにカーネル モジュールをコンパイルするのは初めてです。いくつかのチュートリアルを読みましたが、まだ不足しています。詳細は省きますが、問題とその結果の makefile を説明するシナリオを作成しました。
dir1/main.c
dir2/subdir2/file.c
dir2/subdir2/include/file.h
以下は、結果のメイクファイルです
obj-m:=main.o
main-y := ../dir2/include/file.o
KDIR := /home/userid/rowboat-android/kernel/
PWD := $(shell pwd)
default:
$(MAKE) ARCH=arm CROSS_COMPILE=/home/userid/rowboat-android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi- -C $(KDIR) SUBDIRS=$(PWD) modules
clean
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) clean
説明されているシナリオごとに、この Makefile は正しいですか?
参考資料では、ccflags-y と EXTRA_CFLAGS について説明しています。誰かがこれらのスイッチの目的を説明できますか?
私の主な参照元は
- 外部モジュールの構築
- Linux カーネル Makefile
- Stackoverflow に関する質問と回答
よろしくお願いいたします。