如何编译OpenCV for iOS7(arm64)

编译Xcode项目失败并出现以下错误: “文件/ Users / * /Git/ocr/opencv2.framework/opencv2中缺less必需的架构arm64”

如果我把体系结构(在构build设置下)改为(armv7,armv7s)而不是(armv7,armv7s),效果很好。

如何更改opencv python构build脚本,添加arm64支持opencv2.framework?

最新的OpenCV iOS框架默认支持64位

它可以在OpenCV下载页面下载

我修改了以下内容,以便构build,尽pipe目前还没有arm64 iOS设备需要testing。

编辑 :我也不得不遵循https://stackoverflow.com/a/17025423/1094400

假设“opencv”是包含来自Github的opencv源文件夹:

在每个gzlib.c, gzread.c, gzwrite.c位于opencv/3rdparty/zlib/ add:

 #include <unistd.h> 

在现有包括之后的顶部。

另外打开opencv/platforms/ios/cmake/Modules/Platform/iOS.cmake并从以下行改变行88:

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

至:

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

另外在第99行和第100行的opencv/platforms/ios/build_framework.py中更改buildscript:

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

至:

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

由此产生的图书馆将包括以下内容:

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

虽然我仍然有一个关于opencv/platforms/ios/cmake/Toolchain-iPhoneOS_Xcode.cmake ,它将第14行和第17行中的数据指针的大小定义为4位。对于64位我应该是8位,如果编译的库是为arm64工作的话,那么就testing一下,如果运行不正常,我会build议进一步的调查。

micahp的答案几乎是完美的,但错过了模拟器版本。 所以修改platform / ios / build_framework.py来:

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

您需要下载Xcode 5.0.1的命令行工具,然后运行

 python opencv/platforms/ios/build_framework.py ios 

尝试等待下个月。 将发布一个新的XCode与更强大的支持32/64位。

https://developer.apple.com/news/index.php?id=9162013a

修改“build_frameworks.py”到:

 def build_framework(srcroot, dstroot): "main function to do all the work" targets = ["iPhoneOS", "iPhoneOS", "iPhoneOS", "iPhoneSimulator"] archs = ["armv7", "armv7s", "arm64", "i386"] for i in range(len(targets)): build_opencv(srcroot, os.path.join(dstroot, "build"), targets[i], archs[i]) put_framework_together(srcroot, dstroot) 

@Jan,我按照你的指示,但OpenCV仍然不能在arm64上运行。 你做出了这样一个详细而精彩的答案 – 为什么不在模拟器上检查一下,看看你能不能运行? 🙂

FWIW,我想这可能比看起来更难。 在openCV的stackoverflow克隆,有迹象表明,这个问题可能是不平凡的 。

官方网站的opencv安装指南中没有使用terminal命令,请使用以下命令。 为我工作。

光盘OpenCV-2.3.1

mkdir构build

CDbuild立

cmake -G“Unix Makefiles”

使

sudo make install

我有一个类似的错误,但问题是没有关联的arm64 coompilation.fixed添加框架libc ++。dylib