linux下安装opencv(c++)的一些踩坑问题

文章指出,在预装了Anaconda的情况下,安装OpenCV时需退出base环境,否则在使用make时可能会遇到库链接错误。这些错误通常涉及到ffi类型和库冲突。解决方案是确保不在conda的环境中执行编译过程。文章提供了Ubuntu系统下的C++和OpenCV安装教程链接,以及遇到下载文件问题的参考资源。
部署运行你感兴趣的模型镜像

如果预装了anaconda,在安装时,需要退出base环境,否则在make时,会报很多错误。

比如,下面这些错误,

make[2]: *** [apps/annotation/CMakeFiles/opencv_annotation.dir/build.make:89:bin/opencv_annotation] 错误 1
make[1]: *** [CMakeFiles/Makefile2:3014:apps/annotation/CMakeFiles/opencv_annotation.dir/all] 错误 2

/usr/bin/ld: /lib/x86_64-linux-gnu/libwayland-client.so.0: undefined reference to `ffi_type_uint32@LIBFFI_BASE_7.0'
/usr/bin/ld: /lib/x86_64-linux-gnu/libwayland-client.so.0: undefined reference to `ffi_type_sint32@LIBFFI_BASE_7.0'
/usr/bin/ld: /lib/x86_64-linux-gnu/libp11-kit.so.0: undefined reference to `ffi_closure_alloc@LIBFFI_CLOSURE_7.0'
/usr/bin/ld: /lib/x86_64-linux-gnu/libwayland-client.so.0: undefined reference to `ffi_call@LIBFFI_BASE_7.0'
/usr/bin/ld: /lib/x86_64-linux-gnu/libp11-kit.so.0: undefined reference to `ffi_type_uint8@LIBFFI_BASE_7.0'
/usr/bin/ld: /lib/x86_64-linux-gnu/libp11-kit.so.0: undefined reference to `ffi_prep_closure_loc@LIBFFI_CLOSURE_7.0'
/usr/bin/ld: /lib/x86_64-linux-gnu/libp11-kit.so.0: undefined reference to `ffi_type_uint64@LIBFFI_BASE_7.0'
/usr/bin/ld: /lib/x86_64-linux-gnu/libwayland-client.so.0: undefined reference to `ffi_type_pointer@LIBFFI_BASE_7.0'
/usr/bin/ld: /lib/x86_64-linux-gnu/libwayland-client.so.0: undefined reference to `ffi_type_void@LIBFFI_BASE_7.0'
/usr/bin/ld: /lib/x86_64-linux-gnu/libwayland-client.so.0: undefined reference to `ffi_prep_cif@LIBFFI_BASE_7.0'
collect2: error: ld returned 1 exit status
 看上去是库的链接问题,但实际上是因为在base虚拟环境下。

在cmake过程,其实cmake文件也提示了和conda有关
-- Configuring done
CMake Warning at cmake/OpenCVUtils.cmake:1508 (add_library):
  Cannot generate a safe runtime search path for target opencv_imgcodecs
  because files in some directories may conflict with libraries in implicit
  directories:

    runtime library [libz.so.1] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
      /home/hlg/anaconda3/lib
    runtime library [libpng16.so.16] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
      /home/hlg/anaconda3/lib
    runtime library [libtiff.so.5] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
      /home/hlg/anaconda3/lib
 

因此,在linux下安装了conda环境再安装c++的opnecv,一定要记得退出虚拟环境。

其他的安装,正常参考普通教程即可。

命令行安装教程

Ubuntu 20.04下搭建C++ & OpenCV 4.6.0 & cmake编译 - 知乎 (zhihu.com)

图形化安装过程
(238条消息) 【安装教程】Ubuntu18.04中用CMake-gui安装OpenCV4.1.0和OpenCV_contrib-4.1.0(图文)_wuyu1125的博客-优快云博客

另外,其他过程中下载文件的问题可参考

Ubuntu16.04安装opencv4.1.2和opencv_contrib4.1.2(离线)_data: download: face_landmark_model.dat_拖杀猪刀的的博客-优快云博客

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

### 使用 Anaconda 安装 OpenCV 的常见问题及解决方法 #### 1. 版本兼容性问题 当使用 `conda` 安装 OpenCV 后,在某些情况下可能会遇到版本不兼容的问题。这通常发生在其他依赖库已经安装了特定版本的 OpenCV 或者 Python 解释器本身与其他组件存在冲突时[^1]。 对于此类情况的一个有效策略是从头开始创建一个新的环境并指定所需的 python 和 opencv 版本,例如: ```bash conda create -n cv_env python=3.9 conda activate cv_env conda install opencv ``` 如果仍然存在问题,则考虑手动调整 opencv 的具体版本以确保最佳适配度。可以参照清华镜像源提供的链接获取适合当前系统的 opencv-python 版本列表,并通过 pip 工具安装相应版本: ```bash pip uninstall opencv-python pip install opencv-python==4.5.1.48 ``` #### 2. 缺少必要的依赖项 有时即使成功安装OpenCV ,但在实际调用其功能模块时仍会抛出错误提示缺少某些外部依赖文件或库。这类问题往往是因为操作系统层面缺失了一些重要的编译/运行所需资源所致[^3]。 针对 Linux 用户来说,可能需要额外安装如下软件包(以 Ubuntu 发行为例): ```bash sudo apt-get update && sudo apt-get upgrade sudo apt-get install libsm6 libxext6 libxrender-dev ``` 而对于 Windows 平台上的开发者而言,则建议确认 Visual C++ Redistributable 是否已正确安装;MacOS 则需保证 Xcode Command Line Tools 处于最新状态。 #### 3. 网络连接不稳定影响下载速度甚至失败 由于网络条件差异较大以及官方仓库位置较远等原因,部分用户反馈在执行 conda/pip 下载操作期间遇到了不同程度的速度慢或者完全无法完成的情况。此时可尝试切换至国内镜像站点加速整个过程,比如 Tsinghua TUNA 镜像站就提供了很好的支持服务: 为了设置 Conda 使用清华大学镜像源作为默认地址,可以在终端里输入下面这条指令: ```bash conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/ conda config --set show_channel_urls yes ``` 而 Pip 方面则可以通过修改配置文件(`~/.pip/pip.conf`)的方式实现相同效果: ```ini [global] index-url=https://pypi.tuna.tsinghua.edu.cn/simple ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值