Linux系统下opencv多版本如何管理和链接准确的opencv版本?

weixin_48116907 2024-04-23 11:38:47

我使用cmake生成一个a.so,a.so依赖opencv的4.8版本的部分so。我把这些so放在a.so的同级目录lib文件夹里。cmake构建的时候没有报错。但是在调用a.so的时候,加载动态库失败。使用ldd -r 发现a.so链接的是opencv3.2版本的so。检查后发现,在系统目录下还有3.2版本的opencv。

编译的时候链接的是lib目录下的cv4.8版本。

使用的时候链接的是系统目录下的cv3.2版本。

尝试的解决方案:

1、在cmakelist中设置a.so安装路径(无效,仍然链接cv3.2)

#SET(CMAKE_SKIP_BUILD_RPATH FALSE)
#SET(CMAKE_INSTALL_RPATH "\${ORIGIN}/lib/")
#SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
#SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH FALSE)

2、在cmakelist中通过find_package(OpenCV 4 REQUIRED )  (查找cv4版本失败)

3、# 设置运行时依赖目录  (失败,仍然链接cv3.2)
set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS "-Wl,-rpath,${ORIGIN}/lib")  

请各位大佬给点意见。。。

...全文
284 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
5250 2024-04-23
  • 打赏
  • 举报
回复 2

find_library(OpenCV_LIBRARIES NAMES opencv_core opencv_highgui HINTS /path/to/opencv/lib)
target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBRARIES})
查找库可以指定路径 不然的话搜索顺序和系统配置有关 不一定是你需要的版本

4,269

社区成员

发帖
与我相关
我的任务
社区描述
OpenCV相关技术交流专区
计算机视觉人工智能opencv 技术论坛(原bbs) 广东省·深圳市
社区管理员
  • OpenCV
  • 幻灰龙
  • OpenCV中国团队
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

OpenCV中国团队官方博客:https://blog.csdn.net/opencvchina

试试用AI创作助手写篇文章吧