Make找不到我的.so.2.4.8文件

时间:2014-02-26 10:22:18

标签: c++ opencv makefile cmake

我正在尝试编译一个使用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?

1 个答案:

答案 0 :(得分:1)

通常,您链接到一个无版本库,该库是版本化库的符号链接。

换句话说,您需要一个符号链接(通常由-devel包与头文件一起安装):

.../libopencv_contrib.so -> .../libopencv_contrib.so.2.4.8

另一种方法是将其链接为-l:libopencv_contrib.so.2.4.8而不是-lopencv_contrib