【调试】MNN库编译踩坑记录

简述

MNN是阿里的推理框架,号称很快,因此要编译试试。
文档地址:

https://www.yuque.com/mnn/cn

仓库地址:

https://github.com/alibaba/MNN

中文文档和英文文档有些许不同,本文按照中文文档进行编译。

编译主库

环境要求:
● Microsoft Visual Studio (>=2017)
● cmake(>=3.13)
● powershell
● Ninja (构建工具,比nmake更快)
cmake 下载地址:

https://cmake.org/

Ninja 下载地址:

https://ninja-build.org/

以上两个工具建议直接下载release编译好的文件,就是可以直接运行的文件。

正式编译

● 64位编译:在设置中找到vcvars64.bat(适用于 VS 2017 的 x64 本机工具命令提示)并单击,打开VS编译x64架构程序的虚拟环境
● 32位编译:在设置中找到vcvarsamd64_x86.bat(VS 2017的 x64_x86 交叉工具命令提示符)并单击,打开VS交叉编译x86架构程序的虚拟环境

cd /path/to/MNN
powershell # 运行该命令从cmd环境进入powershell环境,后者功能更强大
./schema/generate.ps1

# CPU, 64位编译
.\package_scripts\win\build_lib.ps1 -path MNN-CPU/lib/x64
# CPU, 32位编译
.\package_scripts\win\build_lib.ps1 -path MNN-CPU/lib/x86

# CPU+OpenCL, 64位编译
.\package_scripts\win\build_lib.ps1 -path MNN-CPU-OPENCL/lib/x64 -backends opencl
# CPU+OpenCL, 32位编译
.\package_scripts\win\build_lib.ps1 -path MNN-CPU-OPENCL/lib/x86 -backends opencl

# CPU+OpenCL+Vulkan, 64位编译
.\package_scripts\win\build_lib.ps1 -path MNN-CPU-OPENCL/lib/x64 -backends "opencl,vulkan"
# CPU+OpenCL+Vulkan, 32位编译
.\package_scripts\win\build_lib.ps1 -path MNN-CPU-OPENCL/lib/x86 -backends "opencl,vulkan"

可以成功编译主库。

编译转换工具

mkdir build
cd build
cmake -G "Ninja" -DMNN_BUILD_SHARED_LIBS=OFF -DMNN_BUILD_CONVERTER=ON -DCMAKE_BUILD_TYPE=Release -DMNN_WIN_RUNTIME_MT=ON ..
ninja

乱码出错
【调试】MNN库编译踩坑记录_第1张图片

尝试用cmake,VS编译找原因

直接编译debugx64,出现MTd MDd不匹配情况,根据提示,将libprotobuf》属性》C++》代码生成-》运行库改为MDd
在这里插入图片描述
解决

出现fatal error C1060: 编译器的堆空间不足

按照MNN生成需要的库,一个个生成
在这里插入图片描述
编译器的堆空间不足 ,再见

继续区域换成中国,尝试ninja编译,成功。。

你可能感兴趣的:(调试,mnn,人工智能,深度学习)