Skip to content

服务器托管,北京服务器托管,服务器租用-价格及机房咨询

Menu
  • 首页
  • 关于我们
  • 新闻资讯
  • 数据中心
  • 服务器托管
  • 服务器租用
  • 机房租用
  • 支持中心
  • 解决方案
  • 联系我们
Menu

ubuntu 20.04 aarch64 平台交叉编译 opencv

Posted on 2023年9月20日 by hackdl

编译环境

  • win10 64 位
  • VMware Workstation Pro 16 虚拟机
  • 虚拟机安装 ubuntu 20.04
  • opencv 版本: 来自 github 当前最新 4.7

目的

  • 交叉编译 opencv,用于 嵌入式 aarch64 平台

下载 opencv

  • 可以直接从 github 下载 release 版本或者 使用 git clone 最新的 opencv 仓库
  • github opencv https://github.com/opencv/opencv
  • git clone https://github.com/opencv/opencv.git

编译的配置文件

  • 这里使用交叉编译工具链 aarch64-linux-musleabi-gcc,也可以使用 ARM 官方提供的 aarch64-linux-gnu-gcc
  • 配置文件:platforms/linux/aarch64-gnu.toolchain.cmake 复制一份,改为 platforms/linux/aarch64-musl.toolchain.cmake,当然也可以直接使用现有的
  • 修改 platforms/linux/aarch64-musl.toolchain.cmake 中交叉编译工具链的 名称:这里改为了 "aarch64-linux-musleabi"
set(CMAKE_SYSTEM_PROCESSOR aarch64)
set(GCC_COMPILER_VERSION "" CACHE STRING "GCC Compiler version")
set(GNU_MACHINE "aarch64-linux-musleabi" CACHE STRING "GNU compiler triple")
include("${CMAKE_CURRENT_LIST_DIR}/arm.toolchain.cmake")

配置交叉编译工具链

  • 下载并解压 aarch64 交叉编译工具链,然后配置 环境变量,这里修改 sudo vim /etc/profile 文件,在文件末尾增加 export PATH=$PATH:/home/zhangsz/linux/tools/aarch64-linux-musleabi_for_x86_64-pc-linux-gnu/bin,也就是把交叉编译工具链的路径 导出到环境变量
  • source /etc/profile 生效,可以输入 aarch64-linux-musleabi-gcc -v 确认 gcc 交叉编译工具链生效

编译 opencv

  • opencv 默认使用 cmake 进行配置,生成 动态库(so)的 操作步骤如下
  • 在 opencv 目录下,创建一个文件夹,如 build_so
  • cd build_so 进入 build_so 目录,然后执行cmake 配置命令:

cmake -DCMAKE_TOOLCHAIN_FILE=../platforms/linux/aarch64-musl.toolchain.cmake .. -DCMAKE_CXX_FLAGS="-march=armv8-a" -DCMAKE_C_FLAGS="-march=armv8-a" -DBUILD_SHARED_LIBS=ON -DWITH_ADE=OFF

  • 注意 -DCMAKE_TOOLCHAIN_FILE=../platforms/linux/aarch64-musl.toolchain.cmake 表示 使用自己定义的 gcc 交叉编译配置文件
  • -DBUILD_SHARED_LIBS=ON 表示 生成 动态库 (so)
  • -DCMAKE_CXX_FLAGS="-march=armv8-a" -DCMAKE_C_FLAGS="-march=armv8-a" 可以指定生成的平台:armv8-a
  • 最后注意 cmake 执行路径,有个 ..,也就是上一级是 opencv 目录,当前在 opencv/build_so 目录下执行 cmake 命令

配置清单

  • 执行完 cmake 后,会生成 make 的清单,但还没有开始编译

  • 这里需要注意 交叉编译工具链的路径是否正确的识别到,如果没有识别到,注意重新设置 gcc 交叉编译工具链的环境变量

  • 如果没有配置 install 安装目录,默认会安装 在 build_so 目录下的 install 目录,注意如果是交叉编译的 opencv 库,不能安装到当前PC ubuntu 系统的路径下。因为 ubuntu 系统是 x86/64 平台的

make 开始编译

  • 输入 make 开始编译,可以多线程编译,如 make -j16 16线程编译,多线程需要根据当前电脑的硬件配置(CPU 核数)进行调整。
  • 虚拟机 ubuntu 编译,建议使用高性能电脑,虚拟机设置 8核 CPU 与 8GB以上内存。

  • 编译完成后, make install,这样 opencv 生成的库与头文件等,都会存放到 当前 build_so/install 目录下

查看产物

  • opencv 默认产物的路径: build_so/install
zhangsz@zhangsz:~/rtt/opencv/opencv/build_so/install$ ls
bin  include  lib  share

小结

  • opencv 可以通过 cmake 文件或者 cmake 命令,配置某些第三方软件包、特性的开启与关闭
  • opencv 如今不仅可以在 PC 平台使用,可以通过交叉编译,在嵌入式平台上使用

服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net

相关推荐: Hive执行计划之一文读懂Hive执行计划

概述 Hive的执行计划描述了一个hiveSQL语句的具体执行步骤,通过执行计划解读可以了解hiveSQL语句被解析器转换为相应程序语言的执行逻辑。通过执行逻辑可以知晓HiveSQL运行流程,进而对流程进行优化,实现更优的数据查询处理。 同样,通过执行计划,还…

Related posts:

  1. 台式服务器托管收费
  2. 丰城服务器托管租用批发服务
  3. 软件构建和隐喻
  4. 精选苏州托管机房,保障您的服务器稳定
  5. 江苏UbuntuFTP服务器托管:高效、安全的数据存储与管理

服务器托管,北京服务器托管,服务器租用,机房机柜带宽租用

服务器托管

咨询:董先生

电话13051898268 QQ/微信93663045!

上一篇: Cloud Studio 有“新”分享
下一篇: Jenkins部署前后端不分离springboot项目

最新更新

  • MySQL笔记九之limit、offset限制条数
  • 【sdx12】QCA6174 WiFi 5G信道auto时屏蔽DFS信道,手动设置信道检测到雷达信号之后,跳转到指定信道方法需求描述Hostapd版本
  • 零拷贝并非万能解决方案:重新定义数据传输的效率极限
  • 实现python自动化进行薪资核算——数据读取、数据计算、数据输出
  • Webpack性能优化 SplitChunksPlugin的使用详解

随机推荐

  • 深入了解服务器托管:全面解读定义百科
  • 乐昌idc机房托管采购批发
  • [SDOI2015][bzoj 3994][Luo
  • 机柜租用收费标准
  • 分布式储蓄服务器托管是什么意思

客服咨询

  • 董先生
  • 微信/QQ:93663045
  • 电话:13051898268
  • 邮箱:dongli@hhisp.com
  • 地址:北京市石景山区重聚园甲18号2层

友情链接

  • 服务器托管
  • 机房租用托管
  • 服务器租用托管
©2023 服务器托管,北京服务器托管,服务器租用-价格及机房咨询 京ICP备13047091号-8