天宫鹤

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 2023-04-06 17:47  GoGrid  阅读(270)  评论(0编辑  收藏  举报

导航