2

这就是发生的事情。

$ LDFLAGS=-ltestu01 make exemplo
cc   -ltestu01  exemplo.c   -o exemplo
/home/melba/tmp/ccO2KkjG.o: In function `main':
exemplo.c:(.text+0x6e): undefined reference to `unif01_CreateExternGenBits'
exemplo.c:(.text+0x7e): undefined reference to `bbattery_SmallCrush'
exemplo.c:(.text+0x8a): undefined reference to `unif01_DeleteExternGenBits'
collect2: error: ld returned 1 exit status
<builtin>: recipe for target 'exemplo' failed
make: *** [exemplo] Error 1
%

我希望命令是cc exemplo.c -o exemplo -ltestu01. 如何确保链接器的提示位于命令行末尾?

4

1 回答 1

5

make -p打印默认配方。

你的食谱应该是:

%: %.c
#  recipe to execute (built-in):
        $(LINK.c) $^ $(LOADLIBES) $(LDLIBS) -o $@

由此,很明显你应该设置LDLIBS,而不是LDFLAGS

make exemplo LDLIBS=-ltestu01 -B

运行

cc     examplo.c  -ltestu01 -o exemplo

正如预期的那样。似乎意图是LDFLAGS针对诸如-Wl,--something.

于 2018-11-08T20:27:05.043 回答