Makefile‘混和的隐含和普通规则’错误的解决 2013年 06月20日 更多 最近在换了虚拟机中linux版本后,交叉编译嵌入式内核时总是遇到makefile的“混和的隐含和普通规则”,主要原因是老版make工具对于规则允许台下定义: / %/: prepare scripts FORCE $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \ $(build)=$(build-dir) config %config: scripts_basic outputmakefile FORCE $(Q)mkdir -p include/linux include/config $(Q)$(MAKE) $(build)=scripts/kconfig $@ 对于“/””%/”混合在一起定义了,在新版对于这种已经不允许了,应改为: /: prepare scripts FORCE $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \ $(build)=$(build-dir) %/: prepare scripts FORCE $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \ $(build)=$(build-dir) 改过后就不会报如上的错误了