windows 上编译 cpu 版本的 ncnn

在这里插入图片描述

windows 上编译 cpu 版本的 ncnn

发布页面 下载最新的完整的 ncnn 代码包,即 -full-source 后缀的文件。以及 protobuf 的代码包(用于生成 caffe2ncnn 和 onnx2ncnn 工具)。

  1. 我下载的 20221128 版本的 ncnn 和 3.11.2 版本的 protobuf。(这里参考的是https://github.com/Tencent/ncnn/wiki/how-to-build#build-for-windows-x64-using-visual-studio-community-2017)
  2. 解压后进入源代码文件夹中。
  3. 启动 cmake-gui 程序。

编译安装 protobuf

使用 cmake-gui:

  1. source-dir:<你的 protobuf 目录>/cmake
  2. build-dir: <你的 protobuf 目录>/build-mingw
  3. 选项设置:
    1. CMAKE_BUILD_TYPE=Release
    2. CMAKE_INSTALL_PREFIX=<你的 protobuf 目录>/build-mingw/install
    3. protobuf_WIZH_ZLIB=OFF
    4. protobuf_BUILD_TESTS=OFF
    5. protobuf_MSVC_STATIC_RUNTIME=OFF
mingw32-make.exe -j2
mingw32-make.exe install

编译安装 cpu 版本的 ncnn

使用 cmake-gui:

  1. source-dir:<你的 ncnn 目录>
  2. build-dir:<你的 ncnn 目录>/build-mingw
  3. 选项设置:
    1. OpenCV_DIR=你的 opencv 的编译目录里的 install 路径
    2. CMAKE_BUILD_TYPE=Release
    3. CMAKE_INSTALL_PREFIX=<你的 ncnn 目录>/build-mingw/install
    4. Protobuf_INCLUDE_DIR=<你的 protobuf 目录>/build-mingw/install/include
    5. Protobuf_LIBRARY_RELEASE=<你的 protobuf 目录>/build-mingw/install/lib/libprotobuf.a
    6. Protobuf_LITE_LIBRARY_RELEASE=<你的 protobuf 目录>/build-mingw/install/lib/libprotobuf-lite.a
    7. Protobuf_PROTOC_EXECUTABLE=<你的 protobuf 目录>/build-mingw/install/bin/protoc.exe
    8. Protobuf_PROTOC_LIBEAEY_RELEASE=<你的 protobuf 目录>/build-mingw/install/lib/libprotoc.a
    9. NCNN_VULKAN=OFF
    10. NCNN_AVX2=OFF
    11. NCNN_SSE2=OFF
mingw32-make.exe -j2
mingw32-make.exe install

onnx -> ncnn

编译安装好 ncnn 后,install 的 bin 里会出现一个 onnx2ncnn.exe 的可执行程序,可以用于将 onnx 转为 ncnn 可使用的模型文件。

dll/lib/so/a/map/pdb 文件

(摘自参考资料2)

  • dll,与 lib 是 Windows 下描述封装代码库的一种格式;a,so 是 linux 下的。- dll 与.so 是动态库,lib 与.a 是静态库。
  • map 文件记录了程序中的数据,变量,函数的地址,数据存放区域。如果程序发生奔溃,则可以通过奔溃的地址在 map 文件中判断崩溃的程序位置。需要在链接中开启生成 map 文件的设置。
  • pdb 文件是 bebug 模式下的调试信息。有次文件才能调试程序。记录了变量位置,函数 1 地址等。

静态库(lib,.a)是以静态的方式(隐式方式)将 lib 文件加载到可执行文件中。通常需要在使用时包含其头文件和在链接设置中设置加载此静态库。动态库(dll,.so)可以用 (1) 静态方式(隐式方式)或者 (2) 动态链接的方式加载到可执行文件中。以静态方式加载相同,需要在链接设置中配置 dll 的 lib 或者.so 的.a 文件。如果是以动态加载方式则需要 dlopen 等接口去加载 dll 或者.so。两者的区别是动态加载是在程序启动后根据程序实际情况进行加载 dll。静态加载在链接阶段便已经将接口地址等信息加载到可执行文件中。静态库将代码,符号等信息都编译到了 lib 文件中。所以如果程序使用,就必须要链接 lib 库。同时,多个程序之间不能分享 lib 库。动态库可以在多个程序见使用一份 dll,减少资源浪费。

参考资料

  1. 27、Window10+Clion+MinGW32编译NCNN使用
  2. dll,lib,.a,.so的联系与区别。什么是共享库?与dll的区别是什么?
  3. ncnn 与 opencv 的互操作:https://github.com/Tencent/ncnn/wiki/use-ncnn-with-opencv
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Windows编译安装ncnn,您可以按照以下步骤进行操作: 1. 下载和安装相关编译工具:您可以从ncnn官方GitHub页面(https://github.com/Tencent/ncnn)下载相关代码。您需要下载和安装CMake(版本3.10以上)以及Visual Studio(建议使用2019版本)。 2. 打开Visual Studio 开发人员命令提示符:在开始菜单中找到Visual Studio并右键单击,选择以管理员身份运行。这将打开一个命令提示符。 3. 配置CMake编译参数:使用cd命令切换到您下载的ncnn源码目录。然后,使用cmake命令来生成Visual Studio项目文件。例如,可以使用以下命令进行配置: ``` mkdir build cd build cmake -G "Visual Studio 16 2019" .. ``` 这将在build文件夹中生成Visual Studio项目文件。 4. 使用Visual Studio进行编译:在Visual Studio开发人员命令提示符中运行以下命令,使用Visual Studio生成ncnn库和示例程序: ``` cmake --build . --config Release ``` 这将开始编译ncnn库和示例程序,并生成相应的可执行文件。 5. 配置环境变量:在系统环境变量中添加ncnn库的路径,以便其他程序能够正常使用(例如将ncnn库目录添加到PATH变量中)。 至此,您已经成功在Windows编译安装了ncnn。现在,您可以使用ncnn库进行深度学习任务,如目标检测、人脸识别等。请注意,根据您的配置和需求,可能还需要进行其他设置和安装依赖项,以确保ncnn能够正常运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值