天宫鹤

Windows11 Qt6.5.0+OpenCV4.7.0+android-ndk-r25.2编译arm64-v8a动态库(.so)、静态库(.a)

1.在cmake-gui中,点击Add Entry,增加ANDROID_ABI,值为arm64-v8a,增加ANDROID_PLATFORM,值为24,版本配置如下:

注:一定要在configure前添加,否则修改也不再使用,会使用默认的armeabi-v7a编译器。

2.点击configure:

 

  

 3.参数调整:

  • BUILD_ANDROID_PROJECTS 不需要示例项目可直接取消勾选

  • BUILD_ANDROID_EXAMPLES = OFF

  • BUILD_SHARED_LIBS = OFF (如果 On 则只编译 so 库)

    WITH_CUDA = OFF (CUDA 是 NVidia 推出的并行计算架构,编译非安卓 SDK 时建议添加)

    WITH_OPENCL = ON (因为我们编译的是 android sdk,所以建议添加移动端的并行架构支持)

    WITH_OPENCL_SVM = ON (建议开启共享虚拟内存)
    BUILD_opencv_world = ON

3.设置好环境变量的cmd中,切换目录到编译目录(build_android),执行mingw32-make -j16 开始编译。

4.编译完成后,执行mingw32-make install,过会就可以在安装目录找到生成的静态库了(*.a,在编译目录下的install)。

5.M_LIBRARY:C:/Users/Administrator/AppData/Local/Android/Sdk/ndk/25.2.9519653/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/21/libm.so

6.ZLIB_LIBRARY_RELEASE:C:/Users/Administrator/AppData/Local/Android/Sdk/ndk/25.2.9519653/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/21/libz.so

注意:此时只生成了arm64-v8a的静态库(*.a),若需要动态库,请继续。

 5.打开cmake-gui,修改以下选项:

 

  

修改完成后,再次点击configure,此时应该不会有红色的文字,点击generate,生成makefile文件。

6.设置好环境变量的cmd中,切换目录到编译目录(build_android),执行mingw32-make -j16 开始编译。

7.编译完成后,执行mingw32-make install,过会就可以在安装目录找到生成的动态库了(*.so,在编译目录下的install)。

8.到此为止,已经编译完成arm64-v8a的动态库和静态库。

9.注:若QT_ARCH=arm64-v8a,必须添加下面一句并且*.so必须添加在*.a之前。

         LIBS += $$OPENCV_NATIVE/libs/$$QT_ARCH/libopencv_world.so

         否则,会报错:cap_android_mediandk.cpp相关的错误。

10.参考地址:https://blog.csdn.net/aggs1990/article/details/124526728

posted on   GoGrid  阅读(354)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示