Вопрос ubuntu сделать вопрос с файлом


У меня есть небольшой вопрос о файле 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 

thx для продвижения ~~


2
2017-10-13 13:51


происхождения




ответы:


Команда переходит в каталог $(KDIR) и работает оттуда, чтобы построить цель modules,

$(MAKE) это макрос, который запускает исполняемый файл make. Причина этого (вместо того, чтобы просто использовать make) заключается в том, что исполняемый файл может иметь разные имена.

-C <directory> изменения в определенном каталоге перед запуском make.

SUBDIRS=<variable> определяет переменную SUBDIRS при работе сделать.

modules означает, что он попытается построить эту цель.


0
2017-10-13 14:48



thx, но где будет помещен целевой «модуль» в $ (KDIR) или в SUBDIRS? - Cong Li
Это зависит от этого makefile - «модули» на самом деле не могут быть именами файлов. - MasterOfBinary
действительно, я нашел KBUILD_EXTMOD? = $ (SUBDIRS) и определение модулей в make-файле $ KDIR. Thx для быстрого ответа ~ - Cong Li