需要Makefile中目标的特定顺序

时间:2014-05-01 03:47:23

标签: makefile

我有一个问题,首先,我会告诉你我的makefile:

CC      = gcc 
CFLAGS  = -Wall -c

all: tarea1 libdisplay.a

tarea1: tarea1.o operations.o -ldisplay -lmatrix
    $(CC) -o $@ $^

tarea1.o: tarea1.c
    $(CC) $(CFLAGS) $^

operations.o: operations.c
    $(CC) $(CFLAGS) $^

libdisplay.a: display.o
    ar -rcs $@ $^ 

display.o: display.c
    $(CC) $(CFLAGS) $^

tarea1是我的程序,这个目标需要operations.o,它使用了由教授给出的libmatrix.a,但库libdisplay.a需要为我制作,这里是我遇到问题的地方,当我运行我的makefile,它说:

make: *** No rule to make target `-ldisplay', needed by `tarea1'.  Stop.

我知道这个消息出现是因为它试图在libdisplay.a存在之前做tarea1,所以我的问题是如何明确地说明目标libdisplay.a需要在tarea1之前制作?

1 个答案:

答案 0 :(得分:1)

-ldisplay是一个链接器参数,而不是makefile依赖项。

您希望libdisplay.a行右侧的tarea1: ...告诉您该文件需要先创建。