当前位置: 首页 > java >正文

在windows上交叉编译opencv供RK3588使用

环境

NDK r27、RK3588 安卓板子、Android 12

步骤操作要点
1. NDK 下载选择 r27 版本,解压到无空格路径(如 C:/ndk
2. 环境变量配置添加 ANDROID_NDK_ROOT 和工具链路径到系统 PATH
3. CMake 参数调整指定 ANDROID_NATIVE_API_LEVEL=31ANDROID_ABI=aarch64-linux-android
4. 生成与编译使用 Ninja 生成器,执行 cmake --build build --parallel 8
5. 验证与部署检查库文件架构,通过 adb 部署到设备并测试

完整命令执行步骤

1.打开 cmd.exe 并切换到合适目录

mkdir F:/opencv_build
cd F:/opencv_build

2. 输入并执行 CMake 配置命令

cmake -S F:/opencv3.4.1/opencv-3.4.1 -B build ^-DANDROID_NDK="C:/Users/wanyao.zhang/AppData/Local/Android/Sdk/ndk/27.0.12077973" ^-DCMAKE_INSTALL_PREFIX="F:/opencv3.4.1/opencv_install" ^-DCMAKE_TOOLCHAIN_FILE="C:/Users/wanyao.zhang/AppData/Local/Android/Sdk/ndk/27.0.12077973/build/cmake/android.toolchain.cmake" ^-DANDROID_ABI="arm64-v8a" ^-DANDROID_NATIVE_API_LEVEL=31 ^-DCMAKE_TOOLCHAIN_NAME="aarch64-linux-android-clang" ^-G "Ninja" ^-DCMAKE_MAKE_PROGRAM="C:/Users/wanyao.zhang/AppData/Local/Android/Sdk/cmake/3.22.1/bin/ninja.exe" ^-DCMAKE_CXX_STANDARD=14 ^-DCMAKE_CXX_STANDARD_REQUIRED=ON ^-DCMAKE_POLICY_DEFAULT_CMP0057=NEW ^ -Wno-dev 

1. -S F:/opencv3.4.1/opencv-3.4.1
作用:指定 OpenCV 源代码的根目录路径。
含义:-S 表示 Source directory(源代码目录),即 OpenCV 的源代码存放位置。
2. -B build
作用:指定构建输出目录。
含义:-B 表示 Build directory(构建目录),生成的中间文件和编译结果将存放在此目录。这里设置为当前目录下的 build 文件夹。
3. -DANDROID_NDK="..."
作用:指定 Android NDK 的路径。
含义:-D 用于设置 CMake 变量,此处将 ANDROID_NDK 变量指向你安装的 NDK 路径。
确保路径正确,且 NDK 版本(27.0.12077973)与 OpenCV 兼容(OpenCV 3.4.1 可能支持较旧的 NDK,需注意兼容性)。
4. -DCMAKE_INSTALL_PREFIX="..."
作用:指定编译完成后安装 OpenCV 库的路径。
含义:编译成功后,OpenCV 的头文件、库文件等将安装到 F:/opencv3.4.1/opencv_install 目录。
5. -DCMAKE_TOOLCHAIN_FILE="..."
作用:指定 Android 的交叉编译工具链配置文件。
含义:android.toolchain.cmake 是 NDK 提供的脚本,用于配置 Android 的编译环境(如架构、API 级别等)。
必须与 NDK 版本一致,此处路径正确。
6. -DANDROID_ABI="arm64-v8a"
作用:指定目标架构为 ARM64-v8a(64 位 ARM 设备)。
含义:确保编译的库适用于 64 位 Android 设备。其他常见架构包括 armeabi-v7a(32 位)、x86 等。
7. -DANDROID_NATIVE_API_LEVEL=31
作用:设置目标 Android API 级别。
含义:31 对应 Android 12。需确保你的设备或目标 SDK 版本兼容此 API 级别。
8. -DCMAKE_TOOLCHAIN_NAME="aarch64-linux-android-clang"
作用:指定编译工具链名称(可能冗余)。
含义:
aarch64-linux-android-clang 表示使用 Clang 编译器为 ARM64 架构交叉编译。
注意:-DCMAKE_TOOLCHAIN_FILE 已指定工具链文件,此参数可能被覆盖,可尝试删除以避免冲突。
9. -G "Ninja"
作用:指定构建系统生成器为 Ninja。
含义:Ninja 是一个快速的构建工具,比默认的 Make 更高效。
10. -DCMAKE_MAKE_PROGRAM="..."
作用:指定 Ninja 的可执行文件路径。
含义:确保 CMake 使用你指定的 Ninja 版本(路径需正确)。
11. -DCMAKE_POLICY_DEFAULT_CMP0057=NEW
作用:设置 CMake 策略以解决路径兼容性问题。
含义:
CMP0057 与路径处理相关,设置为 NEW 可避免某些旧版本路径问题。
通常在较新版本的 CMake 中默认已启用,但显式设置可确保兼容性。

3. 执行编译与安装

cd build
ninja -j 8
ninja install

编译后,生成包含 libopencv_*.so 文件(如 libopencv_core.solibopencv_imgproc.so 等),将其复制到

app/src/main/jniLibs/arm64-v8a/

下集成应用。

但一开始未启用动态库构建:在 CMake 中,BUILD_SHARED_LIBS 选项控制生成动态库(.so)还是静态库(.a)。若未将其设置为 ON,默认可能生成静态库。OpenCV 的 CMake 配置会遵循此选项,若未显式开启动态库构建,最终产物就是一系列 .a 文件。

于是删除build文件夹,重新进行构建就可以了。

cmake -S F:/opencv3.4.1/opencv-3.4.1 -B build ^-DANDROID_NDK="C:/Users/wanyao.zhang/AppData/Local/Android/Sdk/ndk/27.0.12077973" ^-DCMAKE_INSTALL_PREFIX="F:/opencv3.4.1/opencv_install" ^-DCMAKE_TOOLCHAIN_FILE="C:/Users/wanyao.zhang/AppData/Local/Android/Sdk/ndk/27.0.12077973/build/cmake/android.toolchain.cmake" ^-DANDROID_ABI="arm64-v8a" ^-DANDROID_NATIVE_API_LEVEL=31 ^-DCMAKE_TOOLCHAIN_NAME="aarch64-linux-android-clang" ^-G "Ninja" ^-DCMAKE_MAKE_PROGRAM="C:/Users/wanyao.zhang/AppData/Local/Android/Sdk/cmake/3.22.1/bin/ninja.exe" ^-DCMAKE_CXX_STANDARD=14 ^-DCMAKE_CXX_STANDARD_REQUIRED=ON ^-DCMAKE_POLICY_DEFAULT_CMP0057=NEW ^-DBUILD_SHARED_LIBS=ON

http://www.xdnf.cn/news/162.html

相关文章:

  • 嵌入式linux架构理解(宏观理解)6ull学习心得---从架构理解到自写程序运行及自写程序开机自启动
  • #Linux动态大小裁剪以及包大小变大排查思路
  • 淘宝商品图片API安全调用指南:签名生成与错误处理机制
  • 从右到左 vs 从左到右:字符串转整数的两种方式
  • Web 前端包管理工具深度解析:npm、yarn、pnpm 全面对比与实战建议
  • 图+文+语音一体化:多模态合成数据集构建的实战与方法论
  • wordpress 垂直越权(CVE=2021-21389)漏洞复现详细教程
  • PHP腾讯云人脸核身获取FaceId
  • 《AI大模型应知应会100篇》第24篇:限定输出格式:如何让AI回答更加结构化
  • GCD算法的学习
  • 第三阶段面试题
  • Git常用命令分类汇总
  • 如何学习和研究量子计算与量子计算机:从理论到实践的完整路径
  • MySQL+Redis实战教程:从Docker安装部署到自动化备份与数据恢复20250418
  • Qt官方案例知识点总结(图形视图——Colliding Mice)
  • 人脸扫描黑科技:多相机人脸扫描设备,打造你的专属数字分身
  • 学术AI工具推荐
  • 基于WebRTC技术的EasyRTC:支持任意平台设备的实时音视频通信解决方案
  • 科技天眼守望农田:珈和卫星遥感监测赋能智慧农业,护航粮食安全新未来
  • 替代升级VMware | 云轴科技ZStack构建山西证券一云多芯云平台
  • python有序列表
  • Excel提取图片并自动上传到文件服务器(OOS),获取文件链接
  • Docker用model.config部署及更新多个模型
  • 【基础知识补充】标准库类型:string和vector
  • JDBC 与 MyBatis 详解:从基础到实践
  • 07_Docker 资源限制
  • 软件研发技术团队管理规范
  • 安卓手机如何改ip地址教程
  • ETL数据集成平台在交通运输行业的五大应用场景
  • 旅游资源网站登录(jsp+ssm+mysql5.x)