2014-02-26 38 views
0

我想編譯一個使用OpenCV的C++程序。我的CMakeLists.txt:Make沒有找到我的.so.2.4.8文件

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[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

通常情況下,您鏈接到未版本化的庫,它是版本化的符號鏈接。

換句話說,需要一個符號鏈接(其通常由-devel包的頭文件一起安裝):

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

另一種方法是把它作爲-l:libopencv_contrib.so.2.4.8代替-lopencv_contrib鏈接。

+0

有沒有其他辦法?無論出於何種原因,OpenCV在編譯時都不會自動生成.so符號鏈接。 – haroba

+0

@Aqwis爲你增加另一種方式。 –