需要Makefile中目标的特定顺序
我有一个问题,首先,我将向您展示我的makefile:需要Makefile中目标的特定顺序,makefile,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) $^
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是我的程序,这个目标需要操作。o,它使用教授给出的libmatrix.a,但是库libdisplay.a需要为我制作,这里是我遇到问题的地方,当我运行makefile时,它说:
make: *** No rule to make target `-ldisplay', needed by `tarea1'. Stop.
我知道出现此消息是因为它试图在libdisplay.a之前执行tarea1,所以我的问题是如何明确地说目标libdisplay.a需要在tarea1之前执行?
-ldisplay
是链接器参数,而不是makefile依赖项
您希望
libdisplay.a
位于tarea1:…
行的右侧,告诉make需要首先创建该文件。这不是该消息的意思。该消息来自make,而不是编译器。再看一遍。这意味着make不知道如何使用该名称构建目标。更多细节见我的答案。