【发布时间】:2013-07-01 22:08:27
【问题描述】:
相当简单的问题 - 如果我有一个 .framework 文件,是否有可用于确定用于创建框架的 SDK 和部署目标版本的命令/工具?
同样,这可以对存储在 .app 文件中的应用程序二进制文件执行吗?我希望自动化一个脚本,该脚本将搜索以前构建的应用程序/框架的列表,而不需要原始的 .xcodeproj 文件,并确定它们支持的高/低操作系统版本。
【问题讨论】:
相当简单的问题 - 如果我有一个 .framework 文件,是否有可用于确定用于创建框架的 SDK 和部署目标版本的命令/工具?
同样,这可以对存储在 .app 文件中的应用程序二进制文件执行吗?我希望自动化一个脚本,该脚本将搜索以前构建的应用程序/框架的列表,而不需要原始的 .xcodeproj 文件,并确定它们支持的高/低操作系统版本。
【问题讨论】:
要找出一些二进制文件的 SDK 和部署目标,您应该探索 LC_VERSION_MIN_MACOSX 加载命令。使用otool -l <some_binary> 查看加载命令。
示例:
$otool -l my_binary
...
Load command 9
cmd LC_VERSION_MIN_MACOSX
cmdsize 16
version 10.7
sdk 10.8
...
$otool -l /System/Library/Frameworks/CoreWLAN.framework/CoreWLAN
...
Load command 8
cmd LC_VERSION_MIN_MACOSX
cmdsize 16
version 10.8
sdk 10.8
...
与grep 的管道示例:
otool -l my_binary | grep -A 3 LC_VERSION_MIN_MACOSX
【讨论】:
otool,但旗帜多得令人望而生畏。我的框架确实是在 version 和 sdk 设置为 10.8 的情况下构建的,我现在可以确认将(编译器默认值)更改为 10.7 会产生更好的副本。
otool -arch armv7 -l libfoo.a。
在 Big Sur 11.4 上,我检查:
otool -l my_binary | grep minos
例如输出:
minos 11.0
【讨论】: