en Makefile del núcleoMakefile: *** reglas implícitas y normales mixtas
# 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
errores que causan reglas implícitas y normales mixtas Makefile. (a primera cadena de código proporcionado)
Creo que algo malo con la sintaxis /%/, ¿cómo puedo repararlo?
hasta ahora estoy pensando en la separación de las reglas de esta manera:
# 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
pero es confuso para mí.
Bueno, pero ¿mi solución es correcta? Por lo que yo entiendo, necesito separarlo de esta manera, pero ejecutar el mismo make 2 veces me parece extraño. – Cynede
Sí; la separación será necesaria. Sí, escribir las mismas reglas dos veces no es genial. Tal vez crear una macro para las acciones, y luego usar eso en las reglas. 'DIRECTORY_BUILD_RULES = $ (cmd_crmodverdir); $ (Q) $ (MAKE) KBUILD_MODULES = $ (si $ (CONFIG_MODULES), 1) $ (compilación) = $ (compilación-dir) ', luego:' /: prepare las secuencias de comandos FORCE; $ (DIRECTORY_BUILD_RULES) 'y'% s: prepare los scripts FORCE; $ (DIRECTORY_BUILD_RULES) '. Incluso podría hacer que la lista de dependencias entre en otra macro ... –
ahora dice: La variable recursiva 'DIRECTORY_BUILD_RULES 'se refiere a sí misma (eventualmente). Detener. – Cynede