У меня есть небольшой вопрос по файлу 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
спасибо за продвижение ~ ~
Изменения команды справочника $(KDIR)
и пробеги делают оттуда, чтобы построить цель modules
.
$(MAKE)
макрос, который управляет сделать исполняемым файлом. Причина его (вместо того, чтобы просто использовать make
) состоит в том, что у того исполняемого файла могли быть различные имена.
-C <directory>
изменения определенного справочника перед управлением делают.
SUBDIRS=<variable>
определяет переменную SUBDIRS
, когда управление делает.
modules
средства это попытается построить ту цель.