【问题标题】:Makefile saying Missing OperatorMakefile 说缺少运算符
【发布时间】:2015-05-18 05:21:48
【问题描述】:

我正在尝试运行一个同时编译这些“C”程序的生成文件。

CC=gcc
CFLAGS=-I.
DEPS = queue.h

all: \threadss

threadss: thread.o queueImp.o
    $(CC) thread.o queueImp.o -o threadss

thread.o: thread.c
    $(CC) $(CFLAGS) threads.c

thread.o: queueImp.c
    $(CC) $(CFLAGS) queueImp.c

clean:
    rm -rf *o threadss

但是返回以下错误:

Makefile:8: *** missing separator.  Stop.

请帮我解决这个问题。我使用的是unix环境。

【问题讨论】:

  • \ 中的 all: \threadss 不应该存在。
  • 也没有迹象表明DEPS 被使用,通常你不必为目标文件(*.o)指定规则,因为规则是隐式的,你的干净规则应该删除 *.o(不是 *o,因为它太宽泛了)

标签: c linux unix makefile


【解决方案1】:

makefile 在规则的每个命令之前都需要一个tab。确保在$(CC) thread.o queueImp.o -o threadss 和其他命令之前tab [不是空格]。

注意:通常,clean 命令用于删除具有.o 扩展名的目标文件。也许你想要的是

 rm -rf *.o threadss
         ^
         |

服务于实际目的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    • 2013-07-07
    • 1970-01-01
    • 1970-01-01
    • 2012-03-23
    • 1970-01-01
    相关资源
    最近更新 更多