【问题标题】:Linker cannot find library file with explicit path链接器找不到具有显式路径的库文件
【发布时间】:2015-10-11 20:07:08
【问题描述】:

在我的 makefile 中,我指定了一个库依赖项,如下所示:

LDFLAGS := -l/home/karnivaurus/OpenCV-3.0.0/build/lib/libopencv_core.so

all: $(DYNAMIC_NAME)

$(DYNAMIC_NAME): $(OBJS) | $(LIB_BUILD_DIR)
    @ echo LD -o $@
    $(Q)$(CXX) -shared -o $@ $(OBJS) $(LINKFLAGS) $(LDFLAGS) $(DYNAMIC_FLAGS)

现在,如果我运行 make all,我会收到以下错误:

/usr/bin/ld: cannot find -l/home/karnivaurus/Libraries/OpenCV-3.0.0-RC1/build/lib/libopencv_core.so

但是,在/home/karnivaurus/Libraries/OpenCV-3.0.0-RC1/build/lib目录下,肯定有一个名为libopencv_core.so的文件。我已经检查了很多次拼写!

是否有任何原因导致链接器无法找到此文件,即使我已明确指定其确切位置并将其传递给链接器?

谢谢!

【问题讨论】:

  • 不使用 Make 在命令行上尝试是否会发生同样的情况?

标签: linux ubuntu makefile


【解决方案1】:

要么使用-L 作为库路径,要么使用-lopencv_core

LDFLAGS := -L /home/karnivaurus/OpenCV-3.0.0/build/lib/ -lopencv_core

或者只包含.so 文件的完整路径,而不包括-l

LDFLAGS := /home/karnivaurus/OpenCV-3.0.0/build/lib/libopencv_core.so

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-24
    • 2014-06-30
    • 1970-01-01
    • 1970-01-01
    • 2014-12-15
    • 2012-09-25
    • 2015-01-18
    • 2011-03-13
    相关资源
    最近更新 更多