在makefile中包含库路径
我的makefile如下所示在makefile中包含库路径,makefile,Makefile,我的makefile如下所示 program_NAME := myprogram program_C_SRCS := $(wildcard *.cc) program_C_OBJS := ${program_C_SRCS:.cc=.o} program_OBJS := $(program_C_OBJS) program_INCLUDE_DIRS := ../INCLUDE program_LIBRARY_DIRS := program_LIBRARIES := CPPFLAGS += $(f
program_NAME := myprogram
program_C_SRCS := $(wildcard *.cc)
program_C_OBJS := ${program_C_SRCS:.cc=.o}
program_OBJS := $(program_C_OBJS)
program_INCLUDE_DIRS := ../INCLUDE
program_LIBRARY_DIRS :=
program_LIBRARIES :=
CPPFLAGS += $(foreach includedir,$(program_INCLUDE_DIRS),-I$(includedir))
LDFLAGS += $(foreach librarydir,$(program_LIBRARY_DIRS),-L$(librarydir))
LDFLAGS += $(foreach library,$(program_LIBRARIES),-l$(library))
.PHONY: all clean distclean
all: $(program_NAME)
$(program_NAME): $(program_OBJS)
$(LINK.cc) $(program_OBJS) -o $(program_NAME)
clean:
@- $(RM) $(program_NAME)
@- $(RM) $(program_OBJS)
distclean: clean
我已经在某个路径/home/Desktop/kk/stack
中创建了一个库堆栈。
我想将这个库包含到我的makefile中,以便在链接过程中从该路径获取它
我试图给出:
program_LIBRARY_DIRS := /home/Desktop/kk/stack
在连接步骤中,我给出:
$(LINK.cc) $(program_OBJS) stack.a -o $(program_NAME)
但是makefile无法从前面提到的路径提取库
相反,如果我直接给出:
$(LINK.cc) $(program_OBJS) /home/Desktop/kk/stack/stack.a -o $(program_NAME)
它工作得很好
请帮助我如何包含此库路径,以便我不必在link命令中给出库的位置。对于某些字符串X
,-L
链接选项仅适用于名为libX.a
或libX.so
并使用-lX
链接的库。您需要将stack.a
重命名为libstack.a
,并在link命令中将其称为-lstack
(理想情况下,您还应该将其放在程序库
定义中,并在$(LINK.cc)
行中使用。)谢谢geekosaur!!!在上面的makefile中,我已经按照您的建议重命名了库,并将该库所在的目录位置放置在program_library_DIRS中,然后它就可以正常工作了。但是当我在程序库中保留库地址时:=../stack/libstack.a。这两个-l和-l选项之间有什么区别?如果我在程序库中给出了库的绝对地址,那么它为什么会失败。请澄清…谢谢程序库:=-lstack
是您应该如何使用它的,如果您重命名了它,并在程序库目录中添加了正确的-L
路径选项。