工作环境: fedora14
目标平台:s3c2440/ s3c6410
开发包内核源码目录:/home/linux-2.6.24-5801
开发包内核版本:2.6.24
交叉编译工具:gcc-3.4.1 及升级版
用 gcc-3.4.6交叉编译3210内核,执行make命令,会提示"*** 混和的隐含和普通规则。 停止。"的错误。这是由于fedora14的Make工具对低版本内核Makefile一些旧的规则兼容不是很好,只需要修改一下开发包内核原码里的 Makefile。对文件/home/rootfs/Makefile修改如下:(新版本分开编译,不在一起)ps:对比下面的修改
把:
/ %/: 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)
%/: prepare scripts FORCE
$(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
$(build)=$(build-dir)
把:
config %config: scripts_basic outputmakefile FORCE
$(Q)mk

在Fedora14环境下,使用gcc-3.4.1及其升级版交叉编译s3c2440/s3c6410的2.6.24内核时,遇到'*** 混和的隐含和普通规则'错误。问题源于新版本Make工具与旧内核Makefile的不兼容。解决方案是修改内核源码中的Makefile,将涉及KBUILD_MODULES的部分和config配置部分进行修改,以适应新版本Make工具的要求。
1万+

被折叠的 条评论
为什么被折叠?



