参考文档

本文档涉及到的目标硬件为全志H8(8核Cortex-A7,Armv7架构),但是对其他Arm芯片也有一定的借鉴意义,只需要更换交叉编译链即可。

开发环境介绍

  • 主机操作系统:Ubuntu14.04 64位
  • 目标平台:BoxV3 全志H8
  • 交叉工具链:arm-linux-gnueabihf,gcc4.8.5
  • opencv版本:3.2.0
  • 编译时间:2018.7.25

设置本地编译链和交叉编译链

# 在/etc/bash.bashrc的最后增加如下指令
# Native Compiler
export AR_host="ar"
export CC_host="gcc"
export CXX_host="g++"
export LINK_host="g++"# Allwinner H8 BoxV3 cross compiler, Qt 5.8.0 SDK
export ARCH=arm
export PATH=/home/root/CQA83TLinux_Qt5.8.0_bv3/buildroot-2017.02.3/output/host/usr/bin/:$PATH
export CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
export CC=/home/root/CQA83TLinux_Qt5.8.0_bv3/buildroot-2017.02.3/output/host/usr/bin/arm-buildroot-linux-gnueabihf-gcc
export CXX=/home/root/CQA83TLinux_Qt5.8.0_bv3/buildroot-2017.02.3/output/host/usr/bin/arm-buildroot-linux-gnueabihf-g++
export LD=/home/root/CQA83TLinux_Qt5.8.0_bv3/buildroot-2017.02.3/output/host/usr/bin/arm-buildroot-linux-gnueabihf-ld
export AR=/home/root/CQA83TLinux_Qt5.8.0_bv3/buildroot-2017.02.3/output/host/usr/bin/arm-buildroot-linux-gnueabihf-ar
export AS=/home/root/CQA83TLinux_Qt5.8.0_bv3/buildroot-2017.02.3/output/host/usr/bin/arm-buildroot-linux-gnueabihf-as
export RANLIB=/home/root/CQA83TLinux_Qt5.8.0_bv3/buildroot-2017.02.3/output/host/usr/bin/arm-buildroot-linux-gnueabihf-ranlib
# 修改完成之后需要重启命令行才能生效
# 你可以通过如下指令来确认交叉编译链是否已经设置好
echo $CC
# 当显示/home/root/CQA83TLinux_Qt5.8.0_bv3/buildroot-2017.02.3/output/host/usr/bin/arm-buildroot-linux-gnueabihf-gcc时表示交叉编译链
# 已经设置好
# 当需要更换为本机编译时屏蔽上面的指令即可

新建cmake Build目录

cd opencv-3.2.0
mkdir _build

修改CMakeLists.txt

# 强制打开NEON开关
# OCV_OPTION(ENABLE_NEON "Enable NEON instructions" "${NEON}" IF CMAKE_COMPILER_IS_GNUCXX AND (ARM OR AARCH64 OR IOS) )
OCV_OPTION(ENABLE_NEON   "Enable NEON instructions"           ON )

修改cmake/OpenCVCompilerOptions.cmake

if(ENABLE_NEON)add_extra_compiler_option("-mcpu=cortex-a7 -mfpu=neon")

使用cmake-gui进行配置

点击Configure按钮弹出工具链配置界面

选择Specify options for cross-compiling,进入交叉编译链设置界面

点击Configure生成配置选项,并且打开Advancd选项

# 去掉勾选为FLASE 勾选为TRUE
BUILD_SHARED_LIBS                 # FLASE为编译静态库 TRUE为编译动态库
CMAKE_BUILD_TYPE                  # Release
CMAKE_CXX_FLAGS                   # -fPIC
CMAKE_C_FLAGS                     # -fPIC
CMAKE_EXE_LINKER_FLAGS            # -lrt -lpthread
CMAKE_INSTALL_PREFIX              # 自定义安装目录
WITH_CUDA                         # FLASE 禁用CUDA
WITH_CUFFT                        # FLASE 禁用CUFFT
WITH_EIGEN                        # FLASE 禁用EIGEN
WITH_FFMPEG                       # FLASE 禁用FFMPEG
WITH_OPENCL                       # FLASE 禁用OPENCL
WITH_OPENCLAMDBLAS                # FLASE 禁用OPENCLAMDBLAS
WITH_OPENCLAMDFFT                 # FLASE 禁用OPENCLAMDFFT
WITH_OPENCL_SVM                   # FLASE 禁用OPENCL_SVM# 可选配置(根据需要进行配置,建议全部去掉勾选)
WITH_TIFF
WITH_1394
WITH_GSTREAMER
WITH_JASPER
WITH_LAPACK
WITH_MATLAB
WITH_WEBP# Opencv编译模块配置
# 为节省编译时间和库体积建议去掉不需要编译的模块,在本文档中只开启了下面几个模块,可以根据具体需要添加
BUILD_opencv_core           # TRUE
BUILD_opencv_imgcodecs      # TRUE
BUILD_opencv_imgproc        # TRUE

点击Generate生成Makefile

进入_build目录&编译

cd _install
make -j8
make install

嵌入式开发之Opencv(一)交叉编译相关推荐

  1. 嵌入式开发之Opencv(二)JPEG解码加速

    参考文档 libjpeg-turbo官网 libjpeg-turbo github主页 JPEG高速低画质选项设置 Speed-Up JPEG Encode/Decode Processing for ...

  2. 嵌入式开发之Qt-5.9.6应用程序开发环境搭建

    参考文档 嵌入式开发之Qt-5.9.6交叉编译(带WebEngine) Qt-5.9.6 linux安装包官方下载地址 Qt-5.9.6 linux安装包百度云下载地址 开发环境介绍 主机操作系统:U ...

  3. 嵌入式linux基本指令,成都嵌入式开发之Linux常用命令大全

    原标题:成都嵌入式开发之Linux常用命令大全 Linux系统中有很多命令,使用Linux系统最常用的就是命令操作,而不是像Windows一样,使用鼠标操作.Linux中许多常用命令是必须掌握的,也有 ...

  4. 嵌入式开发之NorFlash 和NandFlash

    嵌入式开发之NorFlash 和NandFlash 转自:http://blog.csdn.net/tigerjb/article/details/9322035 [摘要]:作为一个嵌入式工程师,要对 ...

  5. 视频教程-物联网嵌入式开发之STM32 和 RT-thread-物联网技术

    物联网嵌入式开发之STM32 和 RT-thread 我叫连志安,现任职广东长虹技术研究所(国企).之前在康佳集团(国企).CVTE(上市公司)等公司任职.负责过Android TV.智能网关.路由器 ...

  6. 嵌入式开发之zynqMp ---Zynq UltraScale+ MPSoC 图像编码板zcu102

    嵌入式开发之zynqMp -Zynq UltraScale+ MPSoC 图像编码板zcu102 1.1 xilinx zynqMp 架构 1.1.1 16nm 级别工艺 Zynq UltraScal ...

  7. 专科生的嵌入式开发之路

    俗话说的好,高中不努力,大学指定没戏,哈哈,谁说的,当然是我说的.高考结束了,我成功以320分的优异成绩成为了一个地道的专科生,高中玩嗨了,这回选志愿就傻眼了,这点分可选的学校并不多,要不再复习一年? ...

  8. 嵌入式开发之qt-4.8.6移植

    目录 前言 一.下载qt-4.8.6 二.一键编译 三.移植到目标机 3.1 文件移植 3.2 配置环境变量 3.3 添加库文件 四.测试 4.1 安装和配置qt-creator 4.2 创建并执行测 ...

  9. 嵌入式开发之davinci--- DVRRDK, EZSDK和DVSDK这三者有什么区别

    下载的时候选择信息要避免security类型的产品,这个是要审查的. DVRRDK是专门针对DVR的开发包是非公开的,针对安防的客户定制的,效率要高. EZSDK是开放的版本架构上使用openmax可 ...

最新文章

  1. python excel 追加写入_python excel写入及追加写入
  2. PHP弱类型及一些绕过姿势
  3. iOS8 用AVAudioPlayer播放音乐(Swift)
  4. 如何下载今日头条视频
  5. 带wiringPi库的交叉编译
  6. 我想变得富有的10个理由
  7. mqtt js 中乱码_ES6中模块导入遇到的问题及其解决办法
  8. python列表字典元祖_python列表,字典,元组常用方法和集合
  9. docker swarm 常用命令
  10. SpringBoot入门学习
  11. 十进制转换为三进制数_python3实现
  12. Jetson Xavier NX学习笔记(三)系统烧录+开机教程+YOLOv7环境搭建+错误总结(详细版)
  13. C# 后台生成二维码图片
  14. Buddy 内存管理机制(下)
  15. 2种方法设置RAR文件打开密码
  16. 那么,我是不工作会死啦?
  17. 什么是链接?(动态链接库和静态链接库的对比)
  18. [晓说]程序员的十层楼
  19. 8.ExecutorService-执行器服务
  20. 如何改小米计算机用户名和密码,小米笔记本Air开机密码怎么取消?2种方法

热门文章

  1. 《数据结构》03-树1 树的同构
  2. shell脚本第三天
  3. ViewPager添加圆点
  4. 【DotA2玩家心得】激活显示FPS/PING 开启国服 开启右键反补
  5. “Word遇到问题需要关闭”的修复方法
  6. Python实现人机对话
  7. 数据分析,主成分分析例题
  8. 3月国产新能源汽车销量排行,坐等蔚来新车型
  9. shell之作为密码生成器
  10. 这一思维武器,让马斯克上天发卫星、下地挖隧道!