Makefile-l命令在目标先决条件中还是在生成目标的指令中?

Makefile-l命令在目标先决条件中还是在生成目标的指令中?,makefile,Makefile,我想知道,如果我要使用-l命令,它应该在以下先决条件中使用?: tarea1: tarea1.o operations.o -ldisplay -lmatrix $(CC) -o $@ $^ 或在说明中,使目标如下所示: tarea1: tarea1.o operations.o $(CC) -o $@ $^ -ldisplay -lmatrix 我被告知它应该像上一个例子(在指令中),因为我只使用libmatrix.a和libdisplay.a(我不使用它们),但我有第一种

我想知道,如果我要使用-l命令,它应该在以下先决条件中使用?:

tarea1: tarea1.o operations.o -ldisplay -lmatrix
    $(CC) -o $@ $^
或在说明中,使目标如下所示:

tarea1: tarea1.o operations.o
    $(CC) -o $@ $^ -ldisplay -lmatrix
我被告知它应该像上一个例子(在指令中),因为我只使用libmatrix.a和libdisplay.a(我不使用它们),但我有第一种方式一样的makefile,它只是工作正常,但如果我像上一个例子那样做,我会得到这个错误

gcc  -o tarea1 tarea1.o operations.o -ldisplay -lmatrix
/usr/bin/ld: cannot find -ldisplay
/usr/bin/ld: cannot find -lmatrix
collect2: ld returned 1 exit status
make: *** [tarea1] Error 1
我应该像第一个例子那样做(这就是我在makefile中所做的),还是像第二个例子那样做(并尝试让它工作)


您好。

我不知道第一种方法对您的效果如何,因为我希望它将
-ldisplay
-lmatrix
视为要构建的目标。
lindisplay.a
libmatrix.a
在哪里,以及如何构建它们?刚才看到了另一个问题,部分回答了我的问题。尝试以下方法:
制作libdisplay.a
,然后
制作libmatrix.a
,然后尝试第二种方法,但使用
$(CC)-o$@$^-L.-ldisplay-lmatrix
,并告诉我们结果。