- Ubuntu x86_64 交叉编译OpenCV 为 arm64
- OpenCV4.5.5、cmake version 3.16.3
- 交叉编译器 gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu
可在arm或linaro官网下载所需版本,本文的交叉编译器可点击链接跳转下载
Downloads | GNU-A Downloads – Arm Developer
Linaro Releases
-
打开opencv源码文件夹,新建build文件夹
- 若已存在build文件夹,说明之前编译过,可删除
-
打开CMake gui
- 填写opencv安装路径
- 填写opencv文件夹下刚创建的build路径,用于存放编译文件
-
若没有配置交叉编译器的环境变量,需要手动为OpenCV指定交叉编译器的路径
(若没有添加路径直接Configure会报错!此时需要在 File -> Delete Cache 清空缓冲再重新配置!)
-
打开
/home/alexios/OpenCV/opencv-4.5.5/platforms/linux/aarch64-gnu.toolchain.cmake
-
设置编译器的路径,链接器ld不需要设置,CMake能够根据
CMAKE_C_COMPILER
和CMAKE_CXX_COMPILER
找到对应的链接器
set(CMAKE_SYSTEM_PROCESSOR aarch64) set(GCC_COMPILER_VERSION "" CACHE STRING "GCC Compiler version") # 设置交叉编译工具链的路径 set(TOOLCHAIN_PATH "/home/alexios/linux_ws/tool/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu" CACHE STRING "Path to custom toolchain") # 设置交叉编译器 set(CMAKE_C_COMPILER "${TOOLCHAIN_PATH}/bin/aarch64-none-linux-gnu-gcc") set(CMAKE_CXX_COMPILER "${TOOLCHAIN_PATH}/bin/aarch64-none-linux-gnu-g++") set(GNU_MACHINE "aarch64-linux-gnu" CACHE STRING "GNU compiler triple") include("${CMAKE_CURRENT_LIST_DIR}/arm.toolchain.cmake")
-
-
点击
Configure
- 选择Unix Makefiles 下的指定交叉编译工具链文件夹
- 目标arm板为RK3588,arm64架构的,选择与开发板相同架构的cmake
-
配置OpenCV模块和CMake编译选项
-
CMAKE_INSTALL_PREFIX可指定安装路径,默认为build目录下的install
-
BUILD为构建、WITH为启用
-
取消勾选opencl、opengl、cuda、qt
-
勾选
-
WITH_V4L(vedio for linux)、INSTALL_C_EXAMPLES
-
图像格式支持 BUILD_JPEG、BUILD_OPENJPEG、BUILD_PNG、BUILD_TIFF、WITH_TIFF、BUILD_WEBP、WITH_WEBP
-
BUILD_ITT(ITT 用于记录和优化性能,特别是多线程任务的调试)、BUILD_ZLIB(压缩)
-
WITH_GTK、WITH_GTK_2_X(GTK(GIMP Toolkit)作为其 GUI 后端的设置。GTK 是一个跨平台的图形用户界面工具包,OpenCV 使用它来实现窗口显示功能(如
imshow
);如果同时启用,CMake 会优先使用 GTK 3(WITH_GTK
),而忽略 GTK 2(WITH_GTK_2_X
))
-
-
再次点击
Configure
,继续配置直到没有任何红色报错即可 -
点击
Generate
生成Makefile,即可关闭cmake-guiInstall to: /home/alexios/OpenCV/opencv-4.5.5/build/install ----------------------------------------------------------------- Configuring done Generating done
-
-
编译和安装
- 回到build目录中
make -j8 #编译 make install #安装
- install目录下即为交叉编译好的opencv库