编译环境
-  win10 64 位 
-  VMware Workstation Pro 16 虚拟机 
-  虚拟机安装 ubuntu 20.04 
-  opencv 版本: 来自 github 当前最新 4.7 
目的
- 交叉编译 opencv 生成静态库(.a),用于 嵌入式 aarch64 平台。
环境配置方法
- 参考上一篇 ubuntu 20.04 aarch64 平台交叉编译 opencv
生成静态库
- 默认会生成 动态库(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 库,不过使用静态库,静态连接,这样应用程序体积会比较大 










