我正在使用一个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
我已经进行了大量搜索,但找不到与我的特定问题有关的任何内容,因此我想知道是否有人对这里发生的事情有所了解。谢谢你!
答案 0 :(得分:2)
有了TARG = all
,您将拥有:
all: all
all: $(OBJS)
为您的程序命名,而不是all
。
答案 1 :(得分:1)
您有all
依赖于all
的循环依赖项(因为TARG
扩展为all
)。依赖关系图必须是DAG。改变
TARG = all
到
TARG = something