ubuntu16.04-交叉编译opencv3.4.6
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版本)
- 下载交叉编译工具链
- arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz
- 下载链接:https://www.veryarm.com/arm-none-linux-gnueabi-gcc#linux
- 安装工具链
- 解压: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的更多相关文章
- 【PyImageSearch】Ubuntu16.04使用OpenCV3.3.0实现图像分类
这篇博文将会展示如何采用一个预训练的深度学习网络(模型)在ImageNet的数据集并把它当作输入图像. 首先说明,运行环境为Ubuntu16.04(或者MacOS),windows暂不支持,已经编译好 ...
- Ubuntu16.04安装opencv-3.4.2
原文链接: https://m.oldpan.me/archives/ubuntu-install-opencv-from-source 第一步:更新我们的系统 sudo apt-get update ...
- ubuntu16.04 安装opencv3.3
from: http://www.pyimagesearch.com/2016/10/24/ubuntu-16-04-how-to-install-opencv/ Step #1: Install O ...
- 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 ...
- ubuntu16.04安装opencv3.4.0
老实说这篇记录可能拖了有8个月了,早在去年6月份我应该是第一遍安装opencv.当时懒得记录,以为自己什么都能记得住.后来由于电脑各种原因,需要重装opencv,装的时候发现啥都记不住了.然后又得去找 ...
- Ubuntu16.04安装OpenCV3.2以及PCL1.8
最近在学习slam14讲,需要配置一些环境<视觉slam十四讲> 这本书中已经给出如何配置相关环境的比较详细的说明,但是有些环境并无卵用,比如OpenCV以及PCL 这里给出自己屡试不爽的 ...
- ubuntu16.04 安装opencv3
(opencvC++) luo@luo-ThinkPad-W540:20181205$ conda install --channel https://conda.anaconda.org/menpo ...
- ubuntu16.04 安装opencv3.4
1.去官网下载opencv,在本教程中选用的时opencv3.4.1,其他版本的配置方法异曲同工. 下载链接http://opencv.org/releases.html,选择sources版本 2. ...
- ubuntu16.04安装opencv3.4.1教程
最近opencv3.4.1发布了,想换个新的试试鲜,于是把配置的过程通过博文的方式记录下来,方便查阅. 本教程原为3.3.0,但经过博主亲测,3.4.0.3.4.1皆适用 1.去官网下载opencv, ...
- Ubuntu16.04 anaconda3 opencv3.1.0 安装CPU版本caffe
安装anaconda3 安装opencv3.1.0 安装依赖库 修改Makefile.config 修改Makefile 编译报错,卸载anaconda中的protobuffer: conda uni ...
随机推荐
- 一文综述python读写csv xml json文件各种骚操作
Python优越的灵活性和易用性使其成为最受欢迎的编程语言之一,尤其是对数据科学家而言.这在很大程度上是因为使用Python处理大型数据集是很简单的一件事情. 如今,每家科技公司都在制定数据战略. ...
- 使用webhooks进行代码的自动化部署
AutoMaticDeployment---自动部署 项目简介 使用Github的webhooks进行代码的自动化部署 本项目是个人最近搞的一个小工具,自己最近在用hexo部署个人博客(地址:http ...
- docker 本地镜像导入导出 compose安装
docker 本地镜像导入导出 1.Docker导入本地gz镜像 [root@rocketmq-nameserver4 dev]# cat alibaba-rocketmq-3.2.6.tar.gz ...
- Ubuntu+Hexo+Github搭建个人博客
Ubuntu+Hexo+Github搭建个人博客 目录 目录 目录 1. 简介 环境 2. Git安装及配置 2.1 安装Git 2.2 创建Git仓库 2.3 配置git仓库 2.4 添加公钥 3. ...
- 服务器部署Jupyter Notebook
先安装jupyter notebook pip install ipython pip install jupyter 创建一个目录(jupyter notebook工作目录) mkdir jupyt ...
- B - 来找一找吧 HihoCoder - 1701(排列组合 + 同余差值相同)
这次到渣渣问桶桶了... 准备给你n个数a1, a2, ... an,桶桶你能从中找出m个特别的整数吗,我想让任意两个之差都是k的倍数. 请你计算有多少种不同的选法.由于选法可能非常多,你只需要输出对 ...
- 如何基于layui的laytpl实现数据绑定
想了半天才想起自己园子的登录密码.可想而知,多长时间没登录了 正文一开始用layui做了几个管理系统,所以用起来觉得确实很容易上手,管理后台最常用的就是form和table以及弹窗类.layui提供的 ...
- es6声明一个类
js语言的传统方式是通过定义构造函数,生成心得对象.是一种基于原型的面向对象系统.在es6中增加了class类的概念,可以使用class关键字来声明一个类.之后用这个类来实例化对象. 构造函数示例 c ...
- spark——spark中常说RDD,究竟RDD是什么?
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是spark专题第二篇文章,我们来看spark非常重要的一个概念--RDD. 在上一讲当中我们在本地安装好了spark,虽然我们只有lo ...
- Hadoop(七):自定义输入输出格式
MR输入格式概述 数据输入格式 InputFormat. 用于描述MR作业的数据输入规范. 输入格式在MR框架中的作用: 文件进行分块(split),1个块就是1个Mapper任务. 从输入分块中将数 ...