[英]How to compile OpenCV for iOS7 (arm64)
编译 Xcode 项目失败并出现以下错误: “文件 /Users/ * /Git/ocr/opencv2.framework/opencv2 中缺少所需的架构 arm64”
如果我将架构(在构建设置下)更改为(armv7,armv7s)而不是(armv7,armv7s),它运行良好。
如何更改 opencv python 构建脚本,为 opencv2.framework 添加 arm64 支持?
最新的 OpenCV iOS 框架默认支持 64 位
可以在: OpenCV下载页面下载
我修改了以下内容以使其构建,尽管我目前还没有 arm64 iOS 设备进行测试。
编辑:我也必须遵循https://stackoverflow.com/a/17025423/1094400
假设“opencv”是包含来自 Github 的 opencv 源的文件夹:
在位于opencv/3rdparty/zlib/
的gzlib.c, gzread.c, gzwrite.c
中的每一个中添加:
#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")
此外,将opencv/platforms/ios/build_framework.py
中第 99 行和第 100 行的构建脚本更改为:
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,如果它不能正常运行,我建议此时进行进一步调查。
micahp 的回答几乎是完美的,但是错过了模拟器版本。 所以修改platforms/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 位的支持更强大。
将“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安装指南中给出的终端命令,而是使用以下命令。 为我工作。
cd OpenCV-2.3.1
mkdir 构建
光盘构建
cmake -G "Unix Makefiles" ..
制作
须藤制作安装
我遇到了类似的错误,但问题与 arm64 编译无关。已修复添加框架 libc++.dylib
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.