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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效