Ubuntu20.04运行darknet报错libopencv_highgui.so.3.2缺失
问题原因
Ubuntu 20.04官方软件源提供的OpenCV版本为4.2,系统默认不存在libopencv_highgui.so.3.2这个3.2版本的动态库。你当前运行的darknet二进制文件是在OpenCV 3.2环境下编译生成的,运行时会固定查找对应版本的依赖库,因此触发共享库加载错误。
解决方法
按可靠性从高到低排列:
- 重新编译darknet适配当前系统环境(首选,无兼容隐患)
- 进入本地darknet源码根目录
- 编辑目录下的
Makefile配置文件:- 你当前执行的检测命令带了
-dont_show参数,不需要GUI弹窗显示检测结果,可以直接关闭OpenCV编译选项,彻底规避相关依赖:OPENCV=0 - 如果后续需要使用可视化检测功能,保持
OPENCV=1配置,先执行命令安装系统源的OpenCV开发包:sudo apt update sudo apt install -y libopencv-dev
- 你当前执行的检测命令带了
- 清理旧的编译缓存,重新编译二进制:
make clean make -j$(nproc) - 编译完成后直接运行原检测命令即可正常执行。
- 软链接现有高版本OpenCV库做版本兼容(临时修复方案,存在运行崩溃风险)
不想重新编译的情况下可以用该方案快速跑通任务:- 查找系统中已安装的libopencv_highgui库路径:
正常安装过libopencv-dev的Ubuntu 20.04会返回路径形如sudo find /usr/lib -name "libopencv_highgui.so.*"/usr/lib/x86_64-linux-gnu/libopencv_highgui.so.4.2 - 进入对应库目录,创建版本软链接并刷新动态库缓存:
cd /usr/lib/x86_64-linux-gnu sudo ln -s libopencv_highgui.so.4.2 libopencv_highgui.so.3.2 sudo ldconfig - 操作完成后即可尝试运行darknet命令。
注意:该方案本质是伪装版本号,如果OpenCV 3.2和4.2之间存在接口不兼容,运行过程中可能出现随机崩溃,仅适合临时使用。
- 查找系统中已安装的libopencv_highgui库路径:
- 手动安装OpenCV 3.2版本(不推荐)
直接在Ubuntu 20.04上安装OpenCV 3.2的安装包会和系统默认的4.x版本产生文件冲突,大概率导致其他依赖OpenCV的系统软件运行异常,非特殊需求不要选择该方案。
内容的提问来源于stack exchange,提问作者hroll
相关产品推荐
相关产品推荐

