【问题标题】:Determining OS X SDK and Deployment Target versions from Framework从框架中确定 OS X SDK 和部署目标版本
【发布时间】:2013-07-01 22:08:27
【问题描述】:

相当简单的问题 - 如果我有一个 .framework 文件,是否有可用于确定用于创建框架的 SDK 和部署目标版本的命令/工具?

同样,这可以对存储在 .app 文件中的应用程序二进制文件执行吗?我希望自动化一个脚本,该脚本将搜索以前构建的应用程序/框架的列表,而不需要原始的 .xcodeproj 文件,并确定它们支持的高/低操作系统版本。

【问题讨论】:

标签: xcode macos otool


【解决方案1】:

要找出一些二进制文件的 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,但旗帜多得令人望而生畏。我的框架确实是在 versionsdk 设置为 10.8 的情况下构建的,我现在可以确认将(编译器默认值)更改为 10.7 会产生更好的副本。
  • 在 iOS 上做同样的事情有什么技巧吗?一直在尝试确定项目中使用的当前 Facebook 和 Crashlytics 框架的部署目标,但此命令没有显示任何类似于最小版本的内容。
  • @Clafou 抱歉,帮不了你
  • @Clafou 你还在寻找如何为 iOS 做这件事吗?
  • 它适用于 iOS,只要你告诉它拱门:otool -arch armv7 -l libfoo.a
【解决方案2】:

在 Big Sur 11.4 上,我检查:

otool -l my_binary | grep minos

例如输出:

minos 11.0

【讨论】:

    猜你喜欢
    • 2013-10-15
    • 1970-01-01
    • 1970-01-01
    • 2018-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    相关资源
    最近更新 更多