с этим makefile:
# If KERNELRELEASE is defined, we've been invoked from the
# kernel build system and can use its language.
ifneq ($(KERNELRELEASE),)
obj-m := module.o
# Otherwise we were called directly from the command
# line; invoke the kernel build system.
else
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
endif
У меня только один вопрос. Этот make-файл читается 2 раза. В первый раз он устанавливает $KERNELDIR
и PWD
- ветвь else
. При втором чтении - возникает вопрос - только устанавливает $obj-m
, но как? К моменту «второго» чтения сценарий должен вызвать Makefile в исходном каталоге (как вызывается с параметрами -C
) и поэтому не может установить переменную obj-m
в моем текущем каталоге (тот, что был ранее, он изменился на исходный каталог). через -C
). Или второй вызов $(MAKE)
наследует переменные?