Makefile产生错误但构建良好吗?

时间:2019-04-23 01:24:14

标签: c linux makefile recipe

我正在使用一个makefile来构建几个程序。这是代码:

SRCS = prog1.c prog2.c prog3.c
TARG = all
CC = gcc
OPTS = -O
LIBS = -lm

OBJS = $(SRCS:.c=.o)

all: $(TARG)

$(TARG): $(OBJS)
    $(CC) -o $(TARG) $(OBJS) $(LIBS)

%.o: %.c
    $(CC) $(OPTS) -c $< -o $@

clean:
    rm -f $(OBJS) $(TARG)

此makefile完美地生成了三个prog.o文件,但是我遇到一个使我感到困惑的错误:

Makefile:12: recipe for target 'all' failed

我已经进行了大量搜索,但找不到与我的特定问题有关的任何内容,因此我想知道是否有人对这里发生的事情有所了解。谢谢你!

2 个答案:

答案 0 :(得分:2)

有了TARG = all,您将拥有:

all: all

all: $(OBJS)

为您的程序命名,而不是all

答案 1 :(得分:1)

您有all依赖于all的循环依赖项(因为TARG扩展为all)。依赖关系图必须是DAG。改变

TARG = all

TARG = something