makefile 없이 커널 모듈을 컴파일하는 것이 가능합니까? 그렇다면 어떻게 컴파일하나요?
답변1
아니요, 모듈을 컴파일하는 데 사용해야 하는 커널 Makefile이 다른 정의를 호출해야 하기 때문에 이는 불가능합니다 obj-m
.
트리 외부 모듈에 대한 일반적인 Makefile은 다음과 같습니다.
ifneq ($(KERNELRELEASE),)
obj-m := mymodule.o
else
KDIR := /lib/modules/`uname -r`/build
all:
$(MAKE) -C $(KDIR) M=$$PWD
endif
처음 호출되면 KERNELRELEASE
정의가 없으며 커널 Makefile이 매개변수와 함께 호출됩니다 M=$$PWD
. 마지막으로 커널 Makefile이 사용되며 M
다시 Makefile 모듈을 찾아 호출합니다. 이번에는 KERNELRELEASE
정의 및 obj-m이 채워집니다. 그러면 모듈이 컴파일됩니다.