Makefile:33: *** mixed implicit and normal rules: deprecated syntax

转载/参考自:https://blog.csdn.net/sinat_24088685/article/details/51009472

在Ubuntu 18.04上编译一个以前的模块,发现会报错误信息

Makefile:33: *** mixed implicit and normal rules: deprecated syntax
make[4]: *** No rule to make target 'install'.  Stop.
原因
系统的make工具太新,make的旧版规则已经无法兼容新版。
解决方法
修改makefile里面的规则,例如
-   config %config: scripts_basic outputmakefile FORCE
+   %config: scripts_basic outputmakefile FORCE

解决方法二
考虑到有其他模块可能也会有旧版的make规则,于是决定降级make版本到3.81(当前版本为4.1)
$ wget ftp://ftp.gnu.org/gnu/make/make-3.81.tar.gz
$ tar -xvf make-3.81.tar.gz
$ cd make-3.81
$ ./configure
$ make
$ sudo make install

编译 make-3.81 的时候如果碰到编译问题 - undefined reference to `__alloca’
请参考http://gnu-make.2324884.n4.nabble.com/undefined-reference-to-alloca-td18308.html

diff --git a/glob/glob.c b/glob/glob.c 
   index f3911bc..8adbde3 100644 
   --- a/glob/glob.c 
   +++ b/glob/glob.c 
   @@ -208,7 +208,7 @@ my_realloc (p, n) 
     #endif /* __GNU_LIBRARY__ || __DJGPP__ */ 
   - #if !defined __alloca && !defined __GNU_LIBRARY__ 
   + #if !defined __alloca && defined __GNU_LIBRARY__ 
     # ifdef    __GNUC__ 
     #  undef alloca 

降级后重新登陆 Ubuntu 18 后可以看到 make 版本已经变成 3.81

$ make --version
GNU Make 3.81
Copyright (C) 2006  Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

This program built for x86_64-unknown-linux-gnu
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"Makefile:40: *** 缺失分隔符。 停止"错误通常是由于Makefile文件中的语法错误引起的。该错误指示在第40行缺少了一个必需的分隔符。要解决这个问题,您可以按照以下几个步骤进行操作: 1. 检查第40行的语法:确保在该行中的每个命令之前都有一个制表符或4个空格作为分隔符。确保没有使用混合的制表符和空格。 2. 检查前面的所有语句:有时,缺失分隔符的错误实际上是在前面的语句中引起的。因此,您应该检查在第40行之前的所有行,确保它们都有正确的分隔符。 3. 检查特殊字符:有时候,特殊字符(如不可见字符或非ASCII字符)可能会导致错误。检查文件中是否存在此类字符,并尝试删除或替换它们。 4. 修改编辑器设置:有些编辑器在保存文件时会自动转换制表符和空格。如果您使用的编辑器设置了自动转换功能,请将其禁用,并确保在Makefile文件中使用的是一致的分隔符。 以上是解决"Makefile:40: *** 缺失分隔符。 停止"错误的一些常见方法。您可以根据您的具体情况尝试这些方法,希望能够解决您的问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [ubuntu 14.0.5 系统make时出现makefile:40: *** missing separator. Stop. 错误 解决方法](https://blog.csdn.net/longgyue/article/details/120892512)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [Makefile:8: *** 缺失分隔符。 停止。](https://blog.csdn.net/laixiangwei/article/details/130770080)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值