在我的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
的文件。我已多次查看拼写了!
链接器找不到此文件的原因是否有任何原因,即使我已明确指定其确切位置并将其传递给链接器?
谢谢!
答案 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