编译过程
1.创建openCVForBuild 目录
2.cd openCVForBuild
3.git clone https://github.com/opencv/opencv.git
4.git clone https://github.com/opencv/opencv_contrib.git
5.brew install libtool
6.open opencv/platforms/ios/build_framework.py
7.找到调用 libtool 的部分,应该类似于:
execute(["libtool", "-static", "-o", res] + libs + libs3 + module)
将 libtool 替换为 glibtool,如下:
execute(["glibtool", "-static", "-o", res] + libs + libs3 + module)
8.python3 opencv/platforms/apple/build_xcframework.py
--out ./build_xcframework_ios
--contrib ./opencv_contrib
--framework_name=opencv2
--build_only_specified_archs
--iphoneos_archs "arm64"
--iphonesimulator_archs "arm64,x86_64"
--iphoneos_deployment_target "12.0"
--without objc
--enable_opencv_modules "dnn_superres,dnn"
过程问题记录
第8步时报错 libtool: error: unrecognised option: '-static'
解决方法:
这个错误表明当前的 libtool
不支持 -static
选项。
主要原因是当前正在使用的是 Homebrew 安装的 GNU 版本 libtool
,这导致了 -static
选项的错误。为了让 OpenCV 构建使用 macOS 自带的 libtool
取消链接 Homebrew 的 GNU
libtool
`brew unlink libtool`
`which libtool`
输出路径为 `/usr/bin/libtool`
如果上述操作未能输出 /usr/bin/libtool
可再次尝试从环境变量中移除 GNU libtool 的路径
export PATH="/usr/bin:$PATH"
再次查看 which libtool
然后再执行第8步
构建产物 opencv2.xcframework.zip
产物分析
iphoneos iphonesimulator opencv2.xcframework
这三个库分别是
-
iphoneos
:- 这是为物理 iOS 设备(如 iPhone、iPad 等)构建的库和框架,使用的是 ARM 架构(arm64)。
- 你会在这个目录下找到专门为 iOS 设备优化的二进制文件。
-
iphonesimulator
:- 这是为 iOS 模拟器构建的库,适用于在 Mac 上运行的模拟器,支持的架构包括
arm64
(针对 Apple Silicon 芯片的 Mac)和x86_64
(针对 Intel 芯片的 Mac)。 - 这个库用于在 Xcode 中测试你的应用时,通过模拟器运行。
- 这是为 iOS 模拟器构建的库,适用于在 Mac 上运行的模拟器,支持的架构包括
-
opencv2.xcframework
:- 这是一个包含多个平台的
xcframework
,它打包了iphoneos
和iphonesimulator
两个版本的库,方便你在 iOS 项目中使用。 -
xcframework
是 Apple 提供的多平台框架格式,支持通过单个包来同时适配设备和模拟器。
- 这是一个包含多个平台的
网友评论