ubuntu 20.04 aarch64 平台交叉编译 opencv 静态库

编译环境

  • win10 64 位

  • VMware Workstation Pro 16 虚拟机

  • 虚拟机安装 ubuntu 20.04

  • opencv 版本: 来自 github 当前最新 4.7

目的

  • 交叉编译 opencv 生成静态库(.a),用于 嵌入式 aarch64 平台。

环境配置方法

生成静态库

  • 默认会生成 动态库(so),可以通过cmake 配置 -DBUILD_SHARED_LIBS=OFF 关闭动态库生成,这样就可以生成静态库了

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

其他

  • 如果感觉 cmake 的命令太长,可以把各个配置放进 platforms/linux/aarch64-musl.toolchain.cmake 里面,这样 cmake 命令就会很精简

  • 打开 vim platforms/linux/aarch64-musl.toolchain.cmake,然后进行各个特性或者第三方库的开关配置

在这里插入图片描述

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")

set(CMAKE_BUILD_TYPE "Release")
set(WITH_CAROTENE OFF)
set(WITH_ITT OFF)
set(WITH_OPENCL OFF)
set(WITH_ADE OFF)

include("${CMAKE_CURRENT_LIST_DIR}/arm.toolchain.cmake")
  • set(CMAKE_BUILD_TYPE "Release") 编译 Release 版本

  • set(WITH_ITT OFF) 关闭了 itt 相关

  • set(WITH_CAROTENE OFF) 关闭了 第三方库 CAROTENE

  • set(WITH_OPENCL OFF) 关闭了 OPENCL

  • set(WITH_ADE OFF) 关闭 ADE

编译

  • make,可以 make -j12 等多线程编译,大大加快编译速度,当然编译的电脑硬件配置要高一些,多核 大内存

  • make install,可以把生成的 opencv 库存放到 当前的目录 build_a/install 目录下,由于是交叉编译,所以需要额外注意 安装路径,不要安装到 系统的目录下。

查看编译产物

  • make 编译完成后,执行 make install,会存放到指定路径,默认不配做,会在当前的build路径下,如 build_a/install 目录

在这里插入图片描述

小结

  • 可以配置 cmake,开关各个需要的选项,包括第三方库等

  • 可以生成静态的 opencv 库,不过使用静态库,静态连接,这样应用程序体积会比较大

猜你喜欢

转载自blog.csdn.net/tcjy1000/article/details/131196315