【发布时间】:2026-01-12 02:10:01
【问题描述】:
上下文
我正在将我的 Mac 应用程序使用的几个库/框架转换为新 Apple Silicon Mac 的通用二进制文件。
问题
我有两个版本的二进制框架:一个为x86_64 编译,一个为arm64 编译。我总是使用otool 检查框架,以确保正确设置了最小部署目标。为此,我使用以下命令:
otool -lv myIntelX86Library.a
在输出中,我看到了我所期望的:
Load command 1
cmd LC_VERSION_MIN_MACOSX
cmdsize 16
version 10.12
sdk 11.0
在arm64 二进制文件上运行相同的命令会生成11.0 的最低版本,但这也是预期的,因为早期版本的macOS 不支持arm64。
但是:
一旦我将这两个库组合成一个胖二进制文件,使用:
lipo -create <pathToIntel.a> <pathToArm.a> -output <pathToUniversal.a>
当我在通用二进制文件上运行 otool -lv 时,我无法再在输出中的任何位置找到 LC_VERSION_MIN_MACOSX 命令。它没有出现。
如何验证胖二进制文件的x86_64 部分是否设置了正确的部署目标?谢谢。
【问题讨论】:
标签: x86 arm64 otool deployment-target lipo