我正在尝试编译使用OpenCV的C++程序。我的CMakeLists.txt:
cmake_minimum_required(VERSION 2.8)
project( DisplayImage )
find_package( OpenCV REQUIRED )
include_directories( ${OpenCV_INCLUDE_DIRS} )
add_executable( main main.cpp )
target_link_libraries( main ${OpenCV_LIBS} )
但是,在运行make时,出现以下错误:
make[2]: *** No rule to make target `/path/to/folder/opencv/lib/libopencv_contrib.so', needed by `main'. Stop.
原因很明显:.so文件以.so.2.4.8(其中2.4.8是OpenCV版本)而不是.so文件存在,因此make找不到它们。如何告诉cmake生成使用.so.2.4.8文件而不使用.so文件的makefile?
最佳答案
通常,您链接到未版本控制的库,该库是到版本库的符号链接(symbolic link)。
换句话说,您需要一个符号链接(symbolic link)(通常由-devel
软件包连同头文件一起安装):
.../libopencv_contrib.so -> .../libopencv_contrib.so.2.4.8
另一种方法是将其链接为
-l:libopencv_contrib.so.2.4.8
而不是-lopencv_contrib
。关于c++ - 使找不到我的.so.2.4.8文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22038357/