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 $@