alibaba / MNN

MNN is a blazing fast, lightweight deep learning framework, battle-tested by business-critical use cases in Alibaba
http://www.mnn.zone/
8.6k stars 1.66k forks source link

编译IOS库的问题 #347

Closed ChisenZhang closed 4 years ago

ChisenZhang commented 4 years ago

没有用提供的Xcode工程编译。 用cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/ios.toolchain.cmake -DIOS_PLATFORM=OS .. -G “Xcode” 生成的工程编的静态库。在模拟器上调用正常,但是换了真机环境就会报arm64架构的东西找不到,arme7的没问题。lipo 查看是有arm7和arm64架构的,怎么回事? 用源码带的工程编出来的framework就不会有什么问题。
还有就是CMake里面打开metal的选项,可以看到编译的源码中包含了metal的源码,编出来的包体积也变大了,但是用MNN_FORWORD_METAL,会提示没有这个东西,是调用的方式不对吗?

li-qing commented 4 years ago
  1. armv7/arm64有差别的话,一般是汇编部分代码的差异问题,cmake的时候只包含了armv7的部分;
  2. 当前Metal需要配搭metallib;
ChisenZhang commented 4 years ago
  1. 如果只包含了armv7部分的话 是不是用cmake 生成Xcode工程的时候,这几句导致的,只包含了第一个if的arm7,其实应该包含两个架构 image
  2. 是需要metallib,但是编译的时候选项选了编译metallib,编出来并没有这个库,较新的commit看到修复了关于编译metallib的东西,可能用新的代码就能编出来metallib的库了,有空再试试
li-qing commented 4 years ago

1 & 2 => 是的

ChisenZhang commented 4 years ago

1 & 2 => 是的

👌