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

[复制链接]
发表于 2025-9-23 00:32:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
情况

NDK r27、RK3588 安卓板子、Android 12
步调操纵要点1. NDK 下载选择 r27 版本,解压到无空格路径(如 C:/ndk)2. 情况变量设置添加 ANDROID_NDK_ROOT 和工具链路径到系统 PATH3. CMake 参数调整指定 ANDROID_NATIVE_API_LEVEL=31、ANDROID_ABI=aarch64-linux-android4. 天生与编译使用 Ninja 天生器,实验 cmake --build build --parallel 85. 验证与摆设查抄库文件架构,通过 adb 摆设到设备并测试完备下令实验步调

1.打开 cmd.exe 并切换到符合目录
  1. mkdir F:/opencv_build
  2. cd F:/opencv_build
复制代码
2. 输入并实验 CMake 设置下令
  1. cmake -S F:/opencv3.4.1/opencv-3.4.1 -B build ^
  2.   -DANDROID_NDK="C:/Users/wanyao.zhang/AppData/Local/Android/Sdk/ndk/27.0.12077973" ^
  3.   -DCMAKE_INSTALL_PREFIX="F:/opencv3.4.1/opencv_install" ^
  4.   -DCMAKE_TOOLCHAIN_FILE="C:/Users/wanyao.zhang/AppData/Local/Android/Sdk/ndk/27.0.12077973/build/cmake/android.toolchain.cmake" ^
  5.   -DANDROID_ABI="arm64-v8a" ^
  6.   -DANDROID_NATIVE_API_LEVEL=31 ^
  7.   -DCMAKE_TOOLCHAIN_NAME="aarch64-linux-android-clang" ^
  8.   -G "Ninja" ^
  9.   -DCMAKE_MAKE_PROGRAM="C:/Users/wanyao.zhang/AppData/Local/Android/Sdk/cmake/3.22.1/bin/ninja.exe" ^
  10.   -DCMAKE_CXX_STANDARD=14 ^
  11.   -DCMAKE_CXX_STANDARD_REQUIRED=ON ^
  12.   -DCMAKE_POLICY_DEFAULT_CMP0057=NEW ^
  13.   -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. 实验编译与安装
  1. cd build
  2. ninja -j 8
  3. ninja install
复制代码
编译后,天生包罗 libopencv_*.so 文件(如 libopencv_core.so、libopencv_imgproc.so 等),将其复制到
  1. app/src/main/jniLibs/arm64-v8a/
复制代码
下集成应用。

但一开始未启用动态库构建:在 CMake 中,BUILD_SHARED_LIBS 选项控制天生动态库(.so)还是静态库(.a)。若未将其设置为 ON,默认大概天生静态库。OpenCV 的 CMake 设置会依照此选项,若未显式开启动态库构建,终极产物就是一系列 .a 文件。
于是删除build文件夹,重新进行构建就可以了。
  1. cmake -S F:/opencv3.4.1/opencv-3.4.1 -B build ^
  2.   -DANDROID_NDK="C:/Users/wanyao.zhang/AppData/Local/Android/Sdk/ndk/27.0.12077973" ^
  3.   -DCMAKE_INSTALL_PREFIX="F:/opencv3.4.1/opencv_install" ^
  4.   -DCMAKE_TOOLCHAIN_FILE="C:/Users/wanyao.zhang/AppData/Local/Android/Sdk/ndk/27.0.12077973/build/cmake/android.toolchain.cmake" ^
  5.   -DANDROID_ABI="arm64-v8a" ^
  6.   -DANDROID_NATIVE_API_LEVEL=31 ^
  7.   -DCMAKE_TOOLCHAIN_NAME="aarch64-linux-android-clang" ^
  8.   -G "Ninja" ^
  9.   -DCMAKE_MAKE_PROGRAM="C:/Users/wanyao.zhang/AppData/Local/Android/Sdk/cmake/3.22.1/bin/ninja.exe" ^
  10.   -DCMAKE_CXX_STANDARD=14 ^
  11.   -DCMAKE_CXX_STANDARD_REQUIRED=ON ^
  12.   -DCMAKE_POLICY_DEFAULT_CMP0057=NEW ^
  13.   -DBUILD_SHARED_LIBS=ON
复制代码
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表