在arm版ubuntu上编译安装c++版本opencv和闭坑指南

这篇具有很好参考价值的文章主要介绍了在arm版ubuntu上编译安装c++版本opencv和闭坑指南。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、安装

1、安装依赖:

2、编译安装ffmpeg

(1)下载源码并解压;

(2)指定编译链和路径:

(3)编译安装

3、编译安装opencv

(1)下载源码并解压

(2)配置

(3)编译并安装

二、坑列表

1、编译opencv报错  c++: internal compiler error: Killed (program cc1plus)

2、解决ffmpeg执行报错“ffmpeg: error while loading shared libraries: libavdevice.so.58: cannot open shared object file: No such file or directory”的问题

3、Ubuntu系统opencv编译错误:Makefile:162:recipe for target ‘all‘ failed make:*** [all] Error 2

4、编译opencv源码时报错:[ 62%] Built target opencv_dnn Makefile:162: recipe for target 'all' failed解决办法

5、error: ‘CODEC_ID_H264’ was not declared in this scope

6、执行opencv的小demo报错:./test1: error while loading shared libraries: libopencv_highgui.so.3.4: cannot open shared object file: No such file or directory


一、安装


       如果在虚拟机中交叉编译,建议将所有的lib库装在同一个目录下,我曾经安装多个lib库时装在不同的路径下,在安装ffmpeg时依赖太多前面提到的库,指定路径太多且混乱,导致ffmeg安装失败。
        所以我把交叉编译链装到了arm板上,直接在板子上编译安装。我的板子可连外网(板子有4G模块,或者用网线连pc,通过pc访问外网)。以下是其步骤:

交叉编译opencv,在次之前,需要安装多个lib库和ffmpeg

1、安装依赖:

依赖包括cmake、pkg-config、yasm、X264等

sudo add-apt-repository ppa:linuxuprising/libpng12
apt-get update && apt-get -y install autoconf automake build-essential cmake ruby libpcre3 libpcre3-dev openssl vim tree lrzsz iproute2 pcregrep procps dnsutils netcat git-core libass-dev libfreetype6-dev libgnutls28-dev libsdl2-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev pkg-config texinfo wget yasm zlib1g-dev checkinstall libfaac-dev libgpac-dev ladspa-sdk-dev libunistring-dev libbz2-dev libjack-jackd2-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libvpx-dev libx264-dev libx265-dev libxvidcore-dev libopenal-dev libopus-dev libsdl1.2-dev libtheora-dev libx11-dev libxfixes-dev texi2html libssl-dev libfdk-aac-dev
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev
sudo apt-get install libcanberra-gtk-module
sudo apt-get install pkg-config
sudo apt-get install -y autoconf automake build-essential git libass-dev libfreetype6-dev libsdl2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev pkg-config texinfo wget zlib1g-dev
sudo apt install libswresample-dev
sudo apt install libavutil-dev
sudo apt install libsdl1.2-dev
sudo apt-get install libx264-142
sudo apt-get install libx264-152
apt-get install libtbb2 libtbb-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
sudo apt-get install libpng12-0 libpng12-dev

 如果上述有安装失败的,不能解决便继续往后走。

2、编译安装ffmpeg


(1)下载源码并解压;


(2)指定编译链和路径:

因为板子只有这一个gcc,所以不执行该步也可

export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-
export PATH=$PATH:/home/toolchain/gcc-linaro-7.5.0-arm-linux-gnueabihf/bin

(3)编译安装


    进入源码路径,make -j8 & make install
    遇到报错再一一解决

3、编译安装opencv


(1)下载源码并解压


(2)配置


    进入源码目录,创建目录build:cd opencv;  mkdir build
    进入build: cd build
    配置:

cmake -D CMAKE_BUILD_TYPE=Release –D CMAKE_INSTALL_PREFIX=/usr/local -D ENABLE_PRECOMPILED_HEADERS=OFF -D WITH_FFMPEG=OFF ..

(3)编译并安装


    make -j4 & make install
    安装过程由机器的性能决定,如果不出任何错误的话,我用了2个多小时。
    每出现一个错误,解决后编译进度从零开始,但是之前完成过的进度会快很多。我总共遇到七八个error,前前后后花了1天时间才编译成功。 

二、坑列表

1、编译opencv报错  c++: internal compiler error: Killed (program cc1plus)

原因:

        内存不足
方法:
创建分区

sudo dd if=/dev/zero of=/swapfile bs=1M count=2048    # 1 * 2048 = 2048 创建 1 g 的内存分区
sudo mkswap /swapfile
sudo swapon /swapfile


# free -m    #可以查看内存使用
# 创建完交换分区之后就可以继续编译
# 编译完之后记得用以下命令关闭交换分区
# 某次我就是忘了关闭交换分区,导致开不了机,然后切换 tty1 ,登进去之后关闭交换分区才可以进入桌面的。
#2. 关闭分区
 

sudo swapoff /swapfile
sudo rm /swapfile

2、解决ffmpeg执行报错“ffmpeg: error while loading shared libraries: libavdevice.so.58: cannot open shared object file: No such file or directory”的问题

方法:
1、看下需要哪些依赖
ldd ffmpeg
2、搜索找不到的依赖

find /usr -name 'libavdevice.so.60'


发现它在路径/usr/local/lib/下
3、添加路径

export LD_LIBRARY_PATH=/usr/local/lib/


再执行ffmpeg -version就可以了

3、Ubuntu系统opencv编译错误:Makefile:162:recipe for target ‘all‘ failed make:*** [all] Error 2

参照博客  https://blog.csdn.net/wzw_2008/article/details/106944407

原因:原因在文件opencv-4.5.5/build/CMakeDownloadLog.txt

cat CMakeDownloadLog.txt
#use_cache "/home/opencv-4.5.5/.cache"
#do_unpack "v0.1.1f.zip" "b624b995ec9c439cbc2e9e6ee940d3a2" "https://github.com/opencv/ade/archive/v0.1.1f.zip" "/home/opencv-4.5.5/build/3rdparty/ade"
#cmake_download "/home/opencv-4.5.5/.cache/ade/b624b995ec9c439cbc2e9e6ee940d3a2-v0.1.1f.zip" "https://github.com/opencv/ade/archive/v0.1.1f.zip"
#try 1
#   Trying 20.205.243.166...
# TCP_NODELAY set
# Connected to github.com (20.205.243.166) port 443 (#0)
# ALPN, offering http/1.1
# successfully set certificate verify locations:
#   CAfile: /etc/ssl/certs/ca-certificates.crt
#   CApath: /etc/ssl/certs
# [5 bytes data]
# TLSv1.3 (OUT), TLS handshake, Client hello (1):
# [512 bytes data]
# OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443
# stopped the pause stream!
# Closing connection 0


下载https://github.com/opencv/ade/archive/v0.1.1f.zip失败
解决方案:
1、手动下载再放到路径/home/opencv-4.5.5/.cache/ade下
2、重新cmake:

cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=ON -D CMAKE_INSTALL_PREFIX=/usr/local .. 


3、再次make 

4、编译opencv源码时报错:[ 62%] Built target opencv_dnn Makefile:162: recipe for target 'all' failed解决办法


解决方案:sudo su下进行make操作,虽然你可能在root权限下操作。

5、error: ‘CODEC_ID_H264’ was not declared in this scope


解决方案:cmake直接关闭ffmpeg,在后面加上
-D WITH_FFMPEG=OFF 

6、执行opencv的小demo报错:./test1: error while loading shared libraries: libopencv_highgui.so.3.4: cannot open shared object file: No such file or directory


共享库出现问题,增加动态库搜索路径即可:
在/etc/ld.so.conf 追加opencv库所在的路径/usr/local/lib文章来源地址https://www.toymoban.com/news/detail-653966.html

到了这里,关于在arm版ubuntu上编译安装c++版本opencv和闭坑指南的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ubuntu18.04下opencv多版本安装及切换

    Opencv网站:https://opencv.org/releases/ 查看已安装opencv的版本 建立opencv安装文件夹 下载解压后 安装路径设置:CMAKE_INSTALL_PREFIX=/usr/local/opencv4.5.1 成功图示 1、安装成功后还需要设置opencv的环境变量。打开文件: 2、将opencv3.4.5库文件的路径添加到环境变量中,将以下内容添加到最后

    2024年04月16日
    浏览(61)
  • openCV的CUDA GPU 版本安装 (Ubuntu windows 通用)

    需要做template match, 比较注重时间,因此opencv 的普通版本不适用。需要用GPU 的。 4090的GPU 测试: 使用普通的python-opencv template match 耗时0.089秒。 GPU 版本:0.0065秒 快了13.69倍 Oh YEAH, case sealed 1: visual studio (不是vs code)

    2024年01月22日
    浏览(42)
  • ubuntu 编译安装支持CUDA的OpenCV+其他opencv细节(需要特定版本gcc)

    在安装完“ linux CUDAtoolkit+cudnn+tensorrt 的安装”之后进行支持cuda的opencv安装 否则报错:CMake Error at modules/dnn/CMakeLists.txt:41 (message): DNN: CUDA backend requires CUDA Toolkit. Please resolve dependency or disable OPENCV_DNN_CUDA=OFF - $ nvcc -v ----- Command \\\'nvcc\\\' not found, but can be installed with: sudo apt install nvid

    2024年02月15日
    浏览(52)
  • ubuntu上安装boost库为SOMEIP的X86和ARM下编译做准备(编译两种版本)

    Boost库是C++拓展库,是SOMEIP源码编译所必需的库。编译 Boost 库时,需要根据不同的架构,选择不同的工具链和参数 首先,Boost源码下载,Boost官网:https://www.boost.org 基于此处我编译的SOMEIP源码版本,需要安装1.74版本的Boost库,下载链接:https://boostorg.jfrog.io/artifactory/main/relea

    2024年02月10日
    浏览(40)
  • Ubuntu20.04 OpenCV详细安装教程(附多版本切换共存教程)

    opencv安装有两种方式: 1.使用包管理器安装预编译版本(安装十分简单,但是 版本只有4.2.0 ,且没有扩展模块且不支持Qt窗口) 2.从源码安装(比较复杂,但是推荐) 这样就安装完成了 这种安装方法,默认把opencv相关文件放置在系统目录 官网下载地址 https://opencv.org/release

    2024年03月13日
    浏览(91)
  • Ubuntu【系统环境下】【编译安装OpenCV】【C++调用系统opencv库】

    本人需要用C++写代码,调用OpenCV库,且要求OpenCV版本号大于4.1.0 由于使用的是18.04的版本,所以apt安装OpenCV的版本始终是3.2.0,非常拉胯!!! 所以只能重新编译安装OpenCV 查看当前C++调用的OpenCV代码 apt 安装 OpenCV sudo apt install libopencv-dev apt 安装 OpenCV 并与系统python环境关联

    2024年02月11日
    浏览(51)
  • 【opencv C++版本】安装和学习 ==Windows下使用VSCode配置OpenCV开发环境

    ref:https://opencv.org/releases/ ref:https://www.cnblogs.com/ticlab/p/16817542.html c_cpp_properties.json 照着ref 没安装成功,先写个二分查找把 ref:https://docs.opencv.org/4.x/df/d65/tutorial_table_of_content_introduction.html nnd,用这个ref在ubuntu20.04 上安装成功了!!!咳咳咳 ref:https://blog.csdn.net/weixin_4479667

    2024年02月14日
    浏览(52)
  • [ubuntu]ubuntu上如何彻底卸载C++的opencv而不影响下次安装使用

    问题场景:我在ubuntu上安装编译了opencv3.4.4之后我又想安装opencv4.5.0结果装上后,opencv库在系统目录很混乱导致出现cmake项目出现很多错误。因此又想卸载掉opencv3.4.4重新安装opencv4.5.0进去。但是如何卸载呢?我们知道opencv在系统里面有include lib一些文件很多,一般默认会安装编

    2024年01月19日
    浏览(45)
  • Window中,Visual Studio 2022(C++)环境下安装OpenCV教程(不用Cmake版本)

    本教程主要为了方便小白安装C++版本的OpenCV。 1. 第一步:下载官方OpenCV 下载后,在本地安装即可,注意记住安装路径,后续需要! 2. 配置系统环境变量,Path中,新增变量。即opencv安装的路径,选到opencv中build/x64/vc15/bin 3. 安装visual studio 2022,官网 直接,按照C++配置安装即可

    2024年02月11日
    浏览(61)
  • 【SLAM实战篇】Ubuntu 20.04版本(OpenCV版本4.5.3)对于ORB-SLAM2安装运行,代码编译,自己的数据集构造

    学完SLAM十四讲 心血来潮想跑一下ORB-SLAM2的代码,纯新手小白,自己的踩坑经历进行整理: 本文章主要对ORB-SLAM2进行编译运行。以及自己构建数据集。 源码github地址:https://github.com/raulmur/ORB_SLAM2 终端克隆代码: 查看源代码,其重要的代码库仅为三个文件夹: Example include s

    2024年03月13日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包