我有一个问题,首先,我会告诉你我的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之前制作?
答案 0 :(得分:1)
-ldisplay
是一个链接器参数,而不是makefile依赖项。
您希望libdisplay.a
行右侧的tarea1: ...
告诉您该文件需要先创建。