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)
改过后就不会报如上的错误了