【问题标题】:No rule to make target `main.c', needed by `main.o'. Stop没有规则来制作目标“main.c”,这是“main.o”所需要的。停止
【发布时间】:2014-06-07 12:50:00
【问题描述】:

我正在尝试制作 Makefile,但出现错误:

make: * 没有生成目标 main.c 的规则,main.o 需要它。停下来。

谁能解释我为什么会收到这个错误,或者如果可能的话甚至建议修复,谢谢。

TARGET =    example

SRC_FILES = \
Makefile \
README \
a.c \
a.h \
b.c \
b.h \
main.c

OBJS = \
  main.o \
  a.o \
  b.o


CC = gcc
CFLAGS = -g -Wall -std=c99


(TARGET):       $(OBJS)
        $(CC) $(OBJS) $(LDFLAGS) -o $@


$(TARGET):      $(TARGET).html $(TARGET).pdf 

$(TARGET).html:     $(TARGET).umt
        $(UMT) $< >$@

$(TARGET).pdf:      $(TARGET).html
        $(HTML2PS) -N 0 -n $(TARGET).html > $(TARGET).ps
        $(PS2PDF) $(TARGET).ps 
        rm -f $(TARGET).ps


clean:
        rm -f $(TARGET).html $(TARGET).pdf


a.o:        a.c a.h
b.o:        b.c b.h
main.o:     main.c a.h b.h

【问题讨论】:

  • 你得到这个错误是因为你的源目录中没有main.c,也没有任何其他文件知道如何转换为main.o。应该有一个吗? ATM 您的 makefile 期望能够生成对象 main.oa.ob.o
  • 如果这是您使用的旧版 unix 操作系统,请记住对于某些操作系统,目标元素必须使用真正的 TAB 字符而不是空格缩进。我认为错误消息会有所不同,但值得 dbl-chking。祝你好运。

标签: c unix makefile main


【解决方案1】:

Deduplicator 已经解释了您收到此错误的原因。建议修复:提供main.c,或将make 文件中的文件名更改为您拥有的文件名(可能是example.c)。

【讨论】:

    猜你喜欢
    • 2012-02-14
    • 2021-05-12
    • 1970-01-01
    • 1970-01-01
    • 2021-12-20
    • 2023-02-25
    • 2015-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多