背景:
因工作需要,在Linux(fedora14)环境下编译工程文件时,
报错:***makefile:165:***mixed implicit and normal rules,编译无法正常进行。
--------------------------------------------------------------------------------------------------------------------------
遇到此种情况后,经过百度发现原因是make工具版本过高(3.82),不支持相关语法(字面意思解为“混合的隐式和普通规则”)。
解决办法有两个:
一、针对系统提示修改makefile,改为新式规则。百度后发现大家遇到的情况一般是与%的使用有关;但我所遇到的好像不是这种情况,出于对makefile语法不熟悉,同时顾忌到可能不止一个makefile存在这种问题,不敢贸然更改,所以只好采用第二种方法——
二、将make工具降级为3.81版本(理论上只适用于fedora13)。以下具体介绍如何降级make。
降级的命令很简单,就一句:
yum --releasever=13 downgrade make
但是直接执行后降级不会顺利完成,这个问题主要跟gpg key有关,原本的gpg key是Fedora14版本的,需要降级回13,以此来“欺骗”系统,完成降级。上网搜索到Fedora13的gpg key,找到/etc/pki/rpm-gpg/目录下的RPM-GPG-KEY-fedora-i386,首先备份,然后再将搜索到的Fedora13的key覆盖之,之后再重新运行上面的降级命令即可。降级完成后要把文件还原,要不然系统升级会有问题。