En el módulo del núcleo existe la variable makefile obj-m . Considera lo siguiente:
CUR = $(shell uname -r) DIR = /lib/modules/$(CUR)/build PWD = $(shell pwd) obj-m := m1.o m2.o default: $(MAKE) -C $(DIR) SUBDIRS=$(PWD) modules En este Makefile , el destino default contiene una receta que invoca la creación sub-make núcleo. La variable obj-m no se exporta al entorno, por lo que la sub-make no puede usarla. Pero si eliminamos la inicialización de la variable obj-m, entonces este make no compila los módulos kernel m1 y m2 . Entonces, la pregunta es:
¿Por qué la creación secundaria del kernel depende de la variable obj-m no exportada en este caso?
Ninguna de las variables make se exporta al entorno.
SUBDIRS se define como una variable make. El archivo MAKE del núcleo busca el archivo SUBDIRS Makefile lo lee y usa cualquier obj-* definido en él.
(Según la documentación , debe usar M en lugar de SUBDIRS ).