环境:Fedora 16 gcc-4.6.3
编译的内核版本为 2.6.21
编译内核时遇到了以下两个问题:
1. make menuconfig时出现了“*** 混和的隐含和普通规则。 停止。”的错误
原因:网上查说是系统的make工具对低版本内核Makefile一些旧的规则兼容不好,所以要修改内核源码里的Makefile文件(参考:Makefile‘混和的隐含和普通规则’错误的解决)
解决方法:找到
/ %/: 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)mkdir -p include/linux include/config
$(Q)$(MAKE) $(build)=scripts/kconfig $@
改成
config: scripts_basic outputmakefile FORCE
$(Q)mkdir -p include/linux include/config
$(Q)$(MAKE) $(build)=scripts/kconfig $@
%config: scripts_basic outputmakefile FORCE
$(Q)mkdir -p include/linux include/config
$(Q)$(MAKE) $(build)=scripts/kconfig $@
2. "scripts/kconfig/lxdialog/dialog.h:32:20: error: curses.h: No such file or directory"
原因:没有安装ncurses-dev
解决方法:
yun install ncurses-devel ## 在fedora16下
apt-get install libncurses-dev ##在ubuntu下