配置环境

UNIX-Like的操作系统(例如Linux的各个发行版/*BSD/macOS)下的编译步骤及依赖大体相同,如下所示

基础依赖

这些依赖是无关编译选项的基础编译依赖

  • cmake(3.10 以上)
  • protobuf (3.0 以上)
    • 指protobuf库以及protobuf编译器。版本号使用 protoc --version 打印出来。
    • 在某些Linux发行版上这两个包是分开发布的,需要手动安装
    • Ubuntu需要分别安装 libprotobuf-dev 以及 protobuf-compiler 两个包
    • Mac OS 上使用 brew install protobuf 进行安装
  • C++编译器
    • GCC或Clang皆可 (macOS无需另外安装,Xcode自带)
      • GCC推荐版本4.9以上
        • 在某些发行版上GCC (GNU C编译器)和G++(GNU C++编译器是分开安装的)。
        • 同样以Ubuntu为例,需要分别安装 gccg++
      • Clang 推荐版本3.9以上
  • zlib

    • MacOS在指定MNN_BUILD_SHARED_LIBS=OFF时编MNNConvert需要zlib静态库,MacOS上默认的zlib只有动态库,所以需要
      1. brew install zlib
      2. # 自行安装的zlib库如果想被pkg-config工具找到,需要设置PKG_CONFIG_PATH环境变量
      3. # 可以在当前shell内临时修改PKG_CONFIG_PATH
      4. export PKG_CONFIG_PATH="/usr/local/Cellar/zlib/{version}/lib/pkgconfig:$PKG_CONFIG_PATH"
      5. # 或者修改~/.bash_profile使得其他shell也生效
      6. echo "export PKG_CONFIG_PATH=/usr/local/Cellar/zlib/{version}/lib/pkgconfig:\$PKG_CONFIG_PATH" >> ~/.bash_profile

      编译选项相关依赖

  • OpenCL

    • macOS下CMake会自动检测,但Apple已经在10.15 Catalina中彻底移除OpenCL支持
    • Linux下你需要ocl-icd-opencl-dev以及特定厂商的ICD包
      • Nvidia: nvidia-opencl-dev
      • AMD: amd-opencl-dev
  • Vulkan
    • libvulkan-dev
  • OpenGL
    • Linux下不支持

具体步骤

  1. cd MNN/
  2. ./schema/generate.sh
  3. mkdir build
  4. cd build
  5. cmake .. -DMNN_BUILD_CONVERTER=true && make -j4

编译产物包含模型转换工具MNNConvert和模型输出工具MNNDump2Json.out

常见问题