in kernel MakefileMakefile errore regola: *** misti regole implicite e normali
# Modules
/%/: prepare scripts FORCE
$(cmd_crmodverdir)
$(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
$(build)=$(build-dir)
%.ko: prepare scripts FORCE
$(cmd_crmodverdir)
$(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
$(build)=$(build-dir) $(@:.ko=.o)
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
causando errore regole implicite e normali misti Makefile. (alla prima stringa su codice fornito)
Penso che qualcosa di sbagliato con /%/ sintassi, come posso ripararlo?
finora sto pensando di separare le regole in questo modo:
# Modules
/: prepare scripts FORCE
$(cmd_crmodverdir)
$(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
$(build)=$(build-dir)
%/: prepare scripts FORCE
$(cmd_crmodverdir)
$(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
$(build)=$(build-dir)
%.ko: prepare scripts FORCE
$(cmd_crmodverdir)
$(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
$(build)=$(build-dir) $(@:.ko=.o)
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
ma è fonte di confusione per me.
Buono ma la mia soluzione è corretta? Per quanto ho capito, ho bisogno di separarlo in questo modo, ma eseguire lo stesso make 2 volte è strano per me. – Cynede
Sì; la separazione sarà necessaria. Sì, scrivere due volte le stesse regole non è grandioso. Magari creare una macro per le azioni e usarla nelle regole. 'DIRECTORY_BUILD_RULES = $ (cmd_crmodverdir); $ (Q) $ (MAKE) KBUILD_MODULES = $ (se $ (CONFIG_MODULES), 1) $ (build) = $ (build-dir) ', quindi:' /: prepara gli script FORCE; $ (DIRECTORY_BUILD_RULES) 'e'% s: preparare gli script FORCE; $ (DIRECTORY_BUILD_RULES) '. È anche possibile creare l'elenco delle dipendenze in un'altra macro ... –
ora indica: La variabile ricorsiva 'DIRECTORY_BUILD_RULES 'si riferisce a se stessa (eventualmente). Stop. – Cynede