c++ - Make 找不到我的 .so.2.4.8 文件

标签 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?

最佳答案

通常,您链接到一个未版本化的库,它是一个指向版本化库的符号链接(symbolic link)。

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

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

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

关于c++ - Make 找不到我的 .so.2.4.8 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22038357/

相关文章:

ruby-on-rails - 警告被视为 rails 中的错误

c++ - 是否有跨平台方法可以将资源嵌入到用 C++ 编写的二进制应用程序中?

c++ - 带有 GCC 和 clang 的 constexpr char 数组

c++ - OpenCV 3.0.0 MSER 二进制掩码

python - 使用 Python 3.5 的 OpenCV 3.1.0 中的 `CV_HAAR_SCALE_IMAGE` 在哪里?

c - 如何在c中将库添加到 'make'命令

c++ - 如何在非托管 C++ 代码中检查字符串是否具有有效的文件路径或目录路径格式?

c++ - 如何在不邀请 future 对象切片的情况下实现 ICloneable

c++ - 获取在可变参数列表中传递的参数类型

C++ cmake/制作 : linker ld does not find library (missing path? )