0、前言

  • 在要移植opecv和SeetaFaceEngine-master到ARM板子上运行的所有步骤之前,有几点需要注意的:
  • 查看板子运行的Kernel版本
  • 交叉编译工具链的gcc版本,关键就是工具链里库所能支持的最低内核版本
    • 可以用file xxx.so,查看
    • 工具链的版本会影响到opecv、seetaface的编译工程,以及编译出来的opecv库、seetaface最终的可执行文件能否在板子的内核里跑起来
  • 文件系统系统里的lib库最好用与上面提到的同一个工具链里的库
  • 下面操作不要在共享文件夹目录中进行,在Ubuntu其他原生目录中进行
  • 下篇交叉编译seetafaceengine-master:https://www.cnblogs.com/xz-954042850-qq/p/12599446.html

1、前提准备

  • Linux操作系统:Ubuntu 16.04
  • OpenCv版本:3.4.6
  • 交叉工具链:arm-2014.05-29-arm-none-linux-gnueabi-,gcc version 4.8.3
  • 目标平台:ARM
  • 板       子:study210,kernel:2.6.35
  • SoC       :S5PV210
  • 编译时间:2020/3/30

2、下载安装

  • opencv官网下载opencv(Source版本)
  • 下载交叉编译工具链
  • 安装工具链
    • 解压:tar -xvjf arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz
    • vim /etc/profile
    • 在末尾添加工具链路径进环境变量PATH
      • export PATH=xxxxx:$PATH
    • 同步生效一下:
      • source /etc/profile
    • 说明:
      • 编译工具:xxx/arm-2014.05/bin/arm-none-linux-gnueabi-gcc、xxx/xxx/arm-2014.05/bin/arm-none-linux-gnueabi-g++
      • 板子根文件系统需要的交叉编译库:arm-2014.05/arm-none-linux-gnueabi/libc/lib/
  • 安装cmake
    • apt-get install cmake(当然除了这种方式,还可以下载cmake压缩包来解压安装)
    • cmake --version查看版本,尽量安装3.1以上的版本,我的是3.5.1
  • 安装cmake-qt-gui
    • sudo apt-get install cmake-qt-gui
    • 利用cmake-gui命令进入cmake的gui界面进行一些配置,例如交叉编译工具链的配置
  • 安装依赖库:
  • sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev

3、在opencv源码目录中创建一个文件夹,用于放置编译输出的文件,以免污染opencv源码目录

  • mkdir build

4、命令行输入:cmake-gui,进入界面设置

  说明:Where is the source code对应opencv的文件夹,Where to build the binaries对应opencv存放编译好的配置文件等信息的文件夹(刚才创建的build文件夹)

  

  选择第四项,交叉编译:

  

  注意:Linux要大写首字母,不能写成linux。Target Root代表标准库与头文件的搜索起始位置,可以理解为对应交叉编译工具的根目录

  下图中的工具链是没选对的,C:/usr/local/arm/arm-2014.05/bin/arm-none-linux-gnueabi-gcc,C++:/usr/local/arm/arm-2014.05/bin/arm-none-linux-gnueabi-g++

  Target Root:/usr/local/arm/arm-2014.05/bin/

  这里我写的路径不一定跟你的一样,因为工具链安装的位置不同,你要灵活点。

  

  

  我的opencv编译后的存放路径,也就是库路径:/root/opencv_dir/lib_opencv_dir(这是自己新建的)

  

5、编译

  sudo make -j4-------这是在上面自己创建的build中执行的

  也许会报错:

  

  解决方法:修改路径,例如我的:/root/opencv_dir/opencv-3.4.6/3rdparty/zlib(当然在这步之前,你要find / -name zlib.h查看zlib.h是否在那个目录存在)

  有的在make编译前勾选了BUILD_ZLIB,但是在编译之后,在cmake-gui这里找不到这zlib的头文件路径,这情况我没解决。

  

  此后,还会貌似还会有其他报错问题,都可以通过将错误信息粘贴到百度查找解决方法,粘贴的信息应局部、全部都试试,例如对于上面的错误,局部信息就是fatal error zlib.h:No such or file or directory

  make成功后……

6、安装

  sudo make install

  此后,在上面对应自己指定的文件夹中就可以看到编译出来的opencv库了,例如我的是:/root/opencv_dir/lib_opencv_dir

  

  通过file xxx.so可以查看是否交叉编译成功了

  

7、配置一些OpenCV的编译环境

  • 将OpenCV的库添加到路径,让系统找到

    • sudo gedit /etc/ld.so.conf.d/opencv.conf
    • 在末尾添加:/root/opencv_dir/lib_opencv_dir/lib--------这是我编译到的我的opencv库路径,你要填你的
    • 右上角点击保存,然后退出
    • sudo ldconfig-----让刚才的配置生效
  • 配置bash
    • 在末尾添加:----------------------------------------------------------看清楚,对应填好你的,别盲目抄

      PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/root/opencv_dir/lib_opencv_dir/lib/pkgconfig
      export PKG_CONFIG_PATH

    • 右上角点击保存,然后退出
    • source /etc/bash.bashrc---------------------------------------------同步让刚才配置生效
  • 更新
    • sudo updatedb

  到这里,opencv交叉编译,配置已完成!!!

体会小结:

  • 在这编译过程中体会到了交叉编译工具链的版本选择真的非常重要,这不仅会影响到opecv的编译,还会影响到seetaface的编译以及,最终在arm板子上执行seetaface编译出来的可执行文件。
  • 希望大家遇到报错信息时,要冷静查看问题根源,百度解决,虽然有的百度找不到直接答案,但是结合百度出来的多篇博客,会对你的报错信息问题定位还是很有帮助的,结合分析,然后自己尝试解决,我也是这样走过来的。
  • 你的点赞便是我的动力!!!

ubuntu16.04-交叉编译opencv3.4.6的更多相关文章

  1. 【PyImageSearch】Ubuntu16.04使用OpenCV3.3.0实现图像分类

    这篇博文将会展示如何采用一个预训练的深度学习网络(模型)在ImageNet的数据集并把它当作输入图像. 首先说明,运行环境为Ubuntu16.04(或者MacOS),windows暂不支持,已经编译好 ...

  2. Ubuntu16.04安装opencv-3.4.2

    原文链接: https://m.oldpan.me/archives/ubuntu-install-opencv-from-source 第一步:更新我们的系统 sudo apt-get update ...

  3. ubuntu16.04 安装opencv3.3

    from: http://www.pyimagesearch.com/2016/10/24/ubuntu-16-04-how-to-install-opencv/ Step #1: Install O ...

  4. ubuntu16.04 安装opencv3.2.0以及opencv_contrib-3.2.0

    1.需要的包:sudo apt-get install build-essentialsudo apt-get install cmake git libgtk2.0-dev pkg-config l ...

  5. ubuntu16.04安装opencv3.4.0

    老实说这篇记录可能拖了有8个月了,早在去年6月份我应该是第一遍安装opencv.当时懒得记录,以为自己什么都能记得住.后来由于电脑各种原因,需要重装opencv,装的时候发现啥都记不住了.然后又得去找 ...

  6. Ubuntu16.04安装OpenCV3.2以及PCL1.8

    最近在学习slam14讲,需要配置一些环境<视觉slam十四讲> 这本书中已经给出如何配置相关环境的比较详细的说明,但是有些环境并无卵用,比如OpenCV以及PCL 这里给出自己屡试不爽的 ...

  7. ubuntu16.04 安装opencv3

    (opencvC++) luo@luo-ThinkPad-W540:20181205$ conda install --channel https://conda.anaconda.org/menpo ...

  8. ubuntu16.04 安装opencv3.4

    1.去官网下载opencv,在本教程中选用的时opencv3.4.1,其他版本的配置方法异曲同工. 下载链接http://opencv.org/releases.html,选择sources版本 2. ...

  9. ubuntu16.04安装opencv3.4.1教程

    最近opencv3.4.1发布了,想换个新的试试鲜,于是把配置的过程通过博文的方式记录下来,方便查阅. 本教程原为3.3.0,但经过博主亲测,3.4.0.3.4.1皆适用 1.去官网下载opencv, ...

  10. Ubuntu16.04 anaconda3 opencv3.1.0 安装CPU版本caffe

    安装anaconda3 安装opencv3.1.0 安装依赖库 修改Makefile.config 修改Makefile 编译报错,卸载anaconda中的protobuffer: conda uni ...

随机推荐

  1. 一文综述python读写csv xml json文件各种骚操作

      Python优越的灵活性和易用性使其成为最受欢迎的编程语言之一,尤其是对数据科学家而言.这在很大程度上是因为使用Python处理大型数据集是很简单的一件事情. 如今,每家科技公司都在制定数据战略. ...

  2. 使用webhooks进行代码的自动化部署

    AutoMaticDeployment---自动部署 项目简介 使用Github的webhooks进行代码的自动化部署 本项目是个人最近搞的一个小工具,自己最近在用hexo部署个人博客(地址:http ...

  3. docker 本地镜像导入导出 compose安装

    docker 本地镜像导入导出 1.Docker导入本地gz镜像 [root@rocketmq-nameserver4 dev]# cat alibaba-rocketmq-3.2.6.tar.gz ...

  4. Ubuntu+Hexo+Github搭建个人博客

    Ubuntu+Hexo+Github搭建个人博客 目录 目录 目录 1. 简介 环境 2. Git安装及配置 2.1 安装Git 2.2 创建Git仓库 2.3 配置git仓库 2.4 添加公钥 3. ...

  5. 服务器部署Jupyter Notebook

    先安装jupyter notebook pip install ipython pip install jupyter 创建一个目录(jupyter notebook工作目录) mkdir jupyt ...

  6. B - 来找一找吧 HihoCoder - 1701(排列组合 + 同余差值相同)

    这次到渣渣问桶桶了... 准备给你n个数a1, a2, ... an,桶桶你能从中找出m个特别的整数吗,我想让任意两个之差都是k的倍数. 请你计算有多少种不同的选法.由于选法可能非常多,你只需要输出对 ...

  7. 如何基于layui的laytpl实现数据绑定

    想了半天才想起自己园子的登录密码.可想而知,多长时间没登录了 正文一开始用layui做了几个管理系统,所以用起来觉得确实很容易上手,管理后台最常用的就是form和table以及弹窗类.layui提供的 ...

  8. es6声明一个类

    js语言的传统方式是通过定义构造函数,生成心得对象.是一种基于原型的面向对象系统.在es6中增加了class类的概念,可以使用class关键字来声明一个类.之后用这个类来实例化对象. 构造函数示例 c ...

  9. spark——spark中常说RDD,究竟RDD是什么?

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是spark专题第二篇文章,我们来看spark非常重要的一个概念--RDD. 在上一讲当中我们在本地安装好了spark,虽然我们只有lo ...

  10. Hadoop(七):自定义输入输出格式

    MR输入格式概述 数据输入格式 InputFormat. 用于描述MR作业的数据输入规范. 输入格式在MR框架中的作用: 文件进行分块(split),1个块就是1个Mapper任务. 从输入分块中将数 ...