【问题标题】:How to explicitly link library path via makefile如何通过makefile显式链接库路径
【发布时间】:2018-04-05 02:58:53
【问题描述】:

我在macOS 中安装了来自brew install libre 的实时库libre。它位于目录/usr/local/Cellar/libre/0.5.7 中。我正在尝试在Makefile 中明确添加此路径,因此我声明RT_LIBS_PATH=-L/usr/local/Cellar/libre/0.5.7。整个 makefile 如下所示:

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)

但是,makefile 似乎无法识别libre,因此我假设我以错误的方式使用RT_LIBS_PATH=-L/usr/local/Cellar/libre/0.5.7/lib。请问,这样有什么问题吗?

【问题讨论】:

    标签: c gcc makefile compiler-errors linker


    【解决方案1】:

    创建 .o 时必须指定库路径,将所有 obj 链接到可执行文件时必须指定它

    $(TARGET): $(OBJECTS)
        @$(CC) $(OBJECTS) $(CFLAGS) $(RT_LIBS_PATH) $(LIBS)  -o $@
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-05
      • 2011-04-28
      相关资源
      最近更新 更多