这些通常是链接器命令行的一部分,并且直接在目标操作中提供,或者更常见地分配给将被扩展以形成链接命令的make变量。在这种情况下:
-L是包含库的目录的路径。库的搜索路径。
-l是要链接到的库的名称。
例如,如果你想链接到库〜/ libs / libabc.a,你可以添加:
-L$(HOME)/libs -labc
要利用默认隐式规则进行链接,请将这些标志添加到变量LDFLAGS,如
LDFLAGS+=-L$(HOME)/libs -labc
例如,分离LDFLAGS和LIBS是一个好习惯
# LDFLAGS contains flags passed to the compiler for use during linking
LDFLAGS = -Wl,--hash-style=both
# LIBS contains libraries to link with
LIBS = -L$(HOME)/libs -labc
program: a.o b.o c.o
$(CC) $(LDFLAGS) $^ $(LIBS) -o $@
# or if you really want to call ld directly,
# $(LD) $(LDFLAGS:-Wl,%=%) $^ $(LIBS) -o $@
即使它可能工作否则,-l …指令应该追溯引用这些符号的对象。一些优化(-Wl, – 根据需要是最明显的)将失败,如果链接以错误的顺序完成。