
Make ファイルについて少し質問があります。コードは次のとおりです。
KERNEL_VERSION := $(shell uname -r)
KERNEL_MODLIB := /lib/modules/$(KERNEL_VERSION)
KERNEL_SOURCES := $(shell test -d $(KERNEL_MODLIB)/source && echo $(KERNEL_MODLIB)/source || echo $(KERNEL_MODLIB)/build)
CPPFLAGS += -DDRIVER_ERROR -DDRIVER_DEBUG
obj-m := main.o
KDIR := $(KERNEL_SOURCES)
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
clean:
$(RM) main.ko.unsigned main.mod.c main.mod.o main.o modules.order module.symvers .main* .tmp_versions/*
このコードが何をするのか知りたいです:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
事前ありがとう〜〜
答え1
コマンドはディレクトリに変更し$(KDIR)
、そこから make を実行してターゲットをビルドしますmodules
。
$(MAKE)
は、make 実行ファイルを実行するマクロです。 を使用する理由は ( を使用する代わりにmake
)、その実行ファイルの名前が異なる可能性があるからです。
-C <directory>
make を実行する前に特定のディレクトリに変更します。
SUBDIRS=<variable>
make を実行するときに変数を定義しますSUBDIRS
。
modules
つまり、そのターゲットを構築しようとするということです。