请稍侯

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)

改过后就不会报如上的错误了