ubuntu 20.04 aarch64 平台交叉编译 opencv

这篇具有很好参考价值的文章主要介绍了ubuntu 20.04 aarch64 平台交叉编译 opencv。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

编译环境

  • 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 交叉编译工具链生效

ubuntu 20.04 aarch64 平台交叉编译 opencv

编译 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 的清单,但还没有开始编译

ubuntu 20.04 aarch64 平台交叉编译 opencv

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

ubuntu 20.04 aarch64 平台交叉编译 opencv

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

make 开始编译

  • 输入 make 开始编译,可以多线程编译,如 make -j16 16线程编译,多线程需要根据当前电脑的硬件配置(CPU 核数)进行调整。

  • 虚拟机 ubuntu 编译,建议使用高性能电脑,虚拟机设置 8核 CPU 与 8GB以上内存。

ubuntu 20.04 aarch64 平台交叉编译 opencv

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

查看产物

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

ubuntu 20.04 aarch64 平台交叉编译 opencv

小结

  • opencv 可以通过 cmake 文件或者 cmake 命令,配置某些第三方软件包、特性的开启与关闭

  • opencv 如今不仅可以在 PC 平台使用,可以通过交叉编译,在嵌入式平台上使用文章来源地址https://www.toymoban.com/news/detail-489718.html

到了这里,关于ubuntu 20.04 aarch64 平台交叉编译 opencv的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Ubuntu20.04 交叉编译Paddle-OCR

    参考链接: https://blog.csdn.net/sz76211822/article/details/130466597?spm=1001.2014.3001.5501 参考链接: https://blog.csdn.net/sz76211822/article/details/130461683?spm=1001.2014.3001.5501 1.将Paddle-Lite编译好的cxx文件夹放置到PaddleOCR/deploy/lite目录下 2.将编译好的opencv文件夹放置到cxx目录下 3.除了拷贝过来的源代码

    2024年02月02日
    浏览(34)
  • 交叉编译工具链arm-linux-gnueabihf的安装-ubuntu 20.04

    http://t.csdn.cn/ZbjFX 建议直接在.bashrc文件作修改 ,修改方式相同 ( vi :视自己的编辑器而定) 因为我在修改profile文件后,环境变量生效,但是命令行的用户名等颜色高亮显示会消失;并且重启终端后,又需要再source一下profile。 但是将环境变量添加至.bashrc则不会出现这两个问题

    2024年02月11日
    浏览(30)
  • libreoffice 7 ( arm64 ubuntu20.04 环境) 源码编译

    基础环境 cpu os docker Dockerfile

    2024年02月13日
    浏览(45)
  • 交叉编译----宿主机x86 ubuntu 64位-目标机ARMv8 aarch64

    1.交叉编译是什么,为什么要交叉编译 编译:在一个平台上生成在该平台上的可执行代码 交叉编译:在一个平台上生成在另一个平台上的可执行代码 交叉编译的例子:如51单片机的可执行代码(hex文件)是在集成环境keil上面编译完成的,我们只需要将编译好的可执行代码下

    2024年02月15日
    浏览(30)
  • Qt教程3-Ubuntu(x86_64)上配置arm64(aarch64)交叉编译环境及QT编译arm64架构工程

    苦辣酸甜时光八载,春夏秋冬志此一生 Qt简介: Qt(官方发音 [kju:t],音同 cute)是一个跨平台的 C++ 开发库,主要用来开发图形用户界面(Graphical User Interface,GUI)程序,当然也可以开发不带界面的命令行(Command User Interface,CUI)程序。 Qt 支持的操作系统有很多,例如通用

    2024年01月23日
    浏览(38)
  • 带wiringPi库的交叉编译 ---宿主机x86Ubuntu,目标机ARMv8 aarch64(香橙派)

    带wiringPi库的交叉编译如何进行 先交叉编译wiringPi库,编译出的库适合香橙派,这时候交叉编译可执行程序的平台和链接库的格式也是正确的 ,然后通过-I和-L来指定链接的wiringPi库的头文件和库的位置,但是现在还没有学习过,后面学了补上 此时如果把wiringPi库拿到Ubuntu上进

    2024年02月15日
    浏览(33)
  • 在Linux、Ubuntu中跨平台编译ARM(AARCH64)平台的binutils

    Binutils 是GNU(https://www.gnu.org/)提供的一组二进制工具的集合。通常,在已经安装了Linux操作系统的个人电脑上,系统就已经自带了这个工具集。但在进行嵌入式开发的时候,可能会用到支持ARM64平台的Binutils,这时就需要用到交叉编译。 此前,在【1】我们已经介绍过Ubuntu中交

    2024年02月05日
    浏览(49)
  • Swupdate的aarch64交叉编译

    上一篇博客我们简单测试了swupdate的基础功能,当时使用的是buildroot进行编译的,依赖关心有buildroot进行处理了。今天我自己手动编译一些swupdate。下面记录了编译swupdate的过程。 基本过程就是下载源码,配置选项,然后进行编译。 swupdate是在github上下载的,下载地址为: l

    2024年02月12日
    浏览(44)
  • Linux(7)Ubuntu20.04 arm64安装Docker

    vi /etc/apt/sources.list 这个命令后面跟了几个软件包的名字,它们分别是: apt-transport-https:这个软件包允许apt使用HTTPS协议来访问软件源。 ca-certificates:这个软件包提供了一些受信任的证书颁发机构的证书,用来验证HTTPS连接的安全性。 curl:这个软件包提供了一个命令行工具,

    2024年02月10日
    浏览(44)
  • RK3588移植-opencv交叉编译aarch64

    注意:本文中的所有配置相关路径都与当前安装的路径有关,需要根据自己的环境进行自行修改!!! OPENCV如果需要ffmpeg视频模块的话,不建议用cmake-gui,有很多bug。建议在ffmpeg相关依赖配置好后使用“问题:”中的cmake命令。 在做yolov5移植rk3588时,由于RKNPU2的example中open

    2024年02月06日
    浏览(33)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包