How to compile OpenCV for iOS7 (arm64)

前端 未结 8 1364
轻奢々
轻奢々 2020-12-03 16:40

Compiling Xcode Project fails with following errors: \'missing required architecture arm64 in file /Users/*/Git/ocr/opencv2.framework/opencv2\'

It works well, if i c

相关标签:
8条回答
  • 2020-12-03 17:16

    I modified the following to make it build, though I haven't got an arm64 iOS device to test at the moment.

    Edit: I also had to follow https://stackoverflow.com/a/17025423/1094400

    Assuming "opencv" is the folder containing the opencv source from Github:

    in each of gzlib.c, gzread.c, gzwrite.c located in opencv/3rdparty/zlib/ add:

    #include <unistd.h>
    

    at the top after the existing include.

    In addition open opencv/platforms/ios/cmake/Modules/Platform/iOS.cmake and change line 88 from:

    set (CMAKE_OSX_ARCHITECTURES "$(ARCHS_STANDARD_32_BIT)" CACHE string  "Build architecture for iOS")
    

    to:

    set (CMAKE_OSX_ARCHITECTURES "$(ARCHS_STANDARD_INCLUDING_64_BIT)" CACHE string  "Build architecture for iOS")
    

    Furthermore change the buildscript at opencv/platforms/ios/build_framework.py in lines 99 and 100 from:

    targets = ["iPhoneOS", "iPhoneOS", "iPhoneSimulator"]
    archs = ["armv7", "armv7s", "i386"]
    

    to:

    targets = ["iPhoneOS", "iPhoneOS", "iPhoneOS", "iPhoneSimulator", "iPhoneSimulator"]
    archs = ["armv7", "armv7s", "arm64", "i386", "x86_64"]
    

    The resulting library will include the following:

    $ xcrun -sdk iphoneos lipo -info opencv2
        Architectures in the fat file: opencv2 are: armv7 armv7s i386 x86_64 arm64
    

    Although I have a remaining concern regarding opencv/platforms/ios/cmake/Toolchain-iPhoneOS_Xcode.cmake which defines the size of a data pointer to be 4 in lines 14 and 17. It should be 8 for 64bit I guess, so as I haven't tested if the compiled library is working for arm64 I would suggest further investigations at this point if it does not run properly.

    0 讨论(0)
  • 2020-12-03 17:24

    @Jan, I followed your instructions, but OpenCV still doesn't run on arm64. You made such a detailed and wonderful answer - why not check it out on a simulator and see if you can make it run? :-)

    FWIW, I think it might be harder than it seems. On the openCV stackoverflow clone, there's an indication that this problem might be non-trivial.

    0 讨论(0)
提交回复
热议问题