【问题标题】:Makefile:2: *** missing separator. Stop [duplicate]Makefile:2: *** 缺少分隔符。停止[重复]
【发布时间】:2014-07-18 14:19:49
【问题描述】:

我有两个 .cpp 文件,即 decryptor.cppprod-ent.cpp
我创建了一个 Makefile 来编译 Linux 平台中的这两个文件。

all: decryptor.cpp prod-ent.cpp
       g++ prod-ent.cpp -o prod-ent -g
       g++ decryptor.cpp -o decryptor -g -lcryptopp
clean:
       rm prod-ent
       rm decryptor

每当我尝试执行 Makefile 时,它​​都会向我显示以下错误:

Makefile:2: * 缺少分隔符。停下来。

我是创建 makefile 的新手,无法找出我的错。请帮助我更正代码。

提前致谢!!

【问题讨论】:

  • 缩进在 Makefile 中很重要,所以请确保发布准确的表示。您发布的内容看起来有问题(目标前的前导空格,allclean 未对齐。)
  • 我记得有几次手动生成的 makefile 会出现这个问题...我认为您需要使用制表符来缩进编译命令,而不是一系列空格。
  • 在所有出现的“g++”和“rm”前面都给出了制表符,并且在两个文件名之间和选项之间有一个空格。还是不行
  • 请确认您使用的是制表符而不是空格
  • 我也遇到了同样的问题,但是我使用不同的编辑器尝试了它给标签及其工作。

标签: makefile


【解决方案1】:

g++rm 命令前面需要一个真正的制表符而不是空格。如果还是失败 那么您的编辑器会插入空格,即使您正在按下键盘上的 tab 键。您需要将编辑器配置为插入硬制表符(ASCII 中的 09)。

喜欢

all: decryptor.cpp prod-ent.cpp
*****g++ prod-ent.cpp -o prod-ent -g
*****g++ decryptor.cpp -o decryptor -g -lcryptopp
clean:
*****rm prod-ent
*****rm decryptor

改为***** 替换TAB。

你可以通过命令检查你的身边

cat -e -t -v  makefile

如果将TAB 赋予该行,则显示行以^I 开头,并以$ 结束该行。

您也可以通过; 进行操作

all: decryptor.cpp prod-ent.cpp ; g++ prod-ent.cpp -o prod-ent -g ; g++ decryptor.cpp -o decryptor -g -lcryptopp
clean: ; rm prod-ent ; rm decryptor

【讨论】:

  • 创造了我的生活!!
  • 这就是问题所在。谢谢@Jayesh
猜你喜欢
  • 2017-08-07
  • 2023-03-21
  • 1970-01-01
  • 2021-12-10
  • 2019-02-06
  • 2022-01-20
  • 2013-09-26
相关资源
最近更新 更多