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

在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

相关文章:

  • 超导体的应用价值:超导磁探测技术开启科技与生活的新变革
  • 树莓派5+Vosk+python实现语音识别
  • 基于spring boot 集成 deepseek 流式输出 的vue3使用指南
  • 「数据可视化 D3系列」入门第十章:饼图绘制详解与实现
  • 03、GPIO外设(三):标准库代码示例
  • Spring Boot 核心注解全解:@SpringBootApplication背后的三剑客
  • JAVA Web_定义Servlet_处理POST请求【练习】
  • 部署路线Ubuntu_MySQL_Django_绑定域名
  • 如何构建跨平台可复用的业务逻辑层(Web、App、小程序)
  • edge browser for linux debian
  • 基于Django实现农业生产可视化系统
  • MyBatis如何配置数据库连接并实现交互?
  • 为您的照片提供本地 AI 视觉:使用 Llama Vision 和 ChromaDB 构建 AI 图像标记器
  • 第三阶段面试题
  • SpringBoot学习(properties、yml(主流)、yaml格式配置文件)(读取yml配置文件的3种方式)(详解)
  • 使用Lean 4和C#进行数学定理证明与逻辑推理
  • 【前沿】成像“跨界”测量——扫焦光场成像
  • JVM之经典垃圾回收器
  • golang context源码
  • 目标检测中的混淆矩阵
  • 2025年两院院士增选工作启动,名额均不超过100名
  • 最高法:“盗链”属于信息网络传播行为,构成侵犯著作权罪
  • 中国牵头制定,在线旅游机构和展览与活动领域ISO国际标准发布
  • 厚植民营企业家成长土壤是民营经济高质量发展的关键
  • 专家解读上海一季度经济数据:经济韧性在增强,民企活力不可小觑
  • 最高检发布知识产权检察白皮书,“知识产权检察厅”同日亮相