
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>
SUBDIRS
make를 실행할 때 변수를 정의합니다 .
modules
이는 해당 목표를 구축하려고 시도한다는 것을 의미합니다.