链接器无法找到具有显式路径的库文件

时间:2015-10-11 20:07:08

标签: linux ubuntu makefile

在我的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的文件。我已多次查看拼写了!

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

谢谢!

1 个答案:

答案 0 :(得分:2)

使用-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