C 如何通过makefile显式链接库路径
我在我的C 如何通过makefile显式链接库路径,c,gcc,makefile,compiler-errors,linker,C,Gcc,Makefile,Compiler Errors,Linker,我在我的macOS中从brew install libre安装了实时库libre。它位于目录/usr/local/ceral/libre/0.5.7中。我试图在Makefile中显式添加此路径,因此我声明RT\u LIBS\u path=-L/usr/local/cillar/libre/0.5.7。整个生成文件如下所示: TARGET = run LIBS = -O2 -lm CC = gcc-7 CFLAGS = -fopenmp RT_LIBS_PATH=-L/usr/local/Cell
macOS
中从brew install libre
安装了实时库libre。它位于目录/usr/local/ceral/libre/0.5.7
中。我试图在Makefile
中显式添加此路径,因此我声明RT\u LIBS\u path=-L/usr/local/cillar/libre/0.5.7
。整个生成文件如下所示:
TARGET = run
LIBS = -O2 -lm
CC = gcc-7
CFLAGS = -fopenmp
RT_LIBS_PATH=-L/usr/local/Cellar/libre/0.5.7/lib
.PHONY: default all clean
all: $(TARGET)
OBJECTS = $(patsubst %.c, %.o, $(wildcard *.c))
HEADERS = $(wildcard *.h)
%.o: %.c $(HEADERS)
@$(CC) $(CFLAGS) $(RT_LIBS_PATH) -c $< -o $@
.PRECIOUS: $(TARGET) $(OBJECTS)
$(TARGET): $(OBJECTS)
@$(CC) $(OBJECTS) $(CFLAGS) $(LIBS) -o $@
clean:
-rm -f *.o
-rm -f $(TARGET)
TARGET=run
LIBS=-O2-lm
CC=gcc-7
CFLAGS=-fopenmp
RT_LIBS_PATH=-L/usr/local/cillar/libre/0.5.7/lib
.PHONY:默认为“全部清除”
全部:$(目标)
对象=$(patsubst%.c、%.o、$(通配符*.c))
标题=$(通配符*.h)
%.o:%.c$(标题)
@$(CC)$(CFLAGS)$(RT\u LIBS\u PATH)-c$<-o$@
.珍贵:$(目标)$(对象)
$(目标):$(对象)
@$(CC)$(对象)$(CFLAGS)$(LIBS)-o$@
清洁:
-rm-f*.o
-rm-f$(目标)
但是,makefile似乎无法识别
libre
,因此我假设我使用RT\u LIBS\u PATH=-L/usr/local/cillar/libre/0.5.7/lib
的方式是错误的。请原谅,这种方式有什么问题吗?您必须在创建时指定库路径。o,您必须在将所有OBJ链接到可执行文件时指定它
$(TARGET): $(OBJECTS)
@$(CC) $(OBJECTS) $(CFLAGS) $(RT_LIBS_PATH) $(LIBS) -o $@