34

当使用 Clang 或 GCC 的 Darwin 后端为 OSX 创建可执行文件时,该标志-mmacosx-version-min=version可用于设置可执行文件将在其上运行的最早版本的 OSX。

有没有办法从给定的可执行文件中追溯使用哪个标志来编译它?即有没有办法确定给定可执行文件所针对的最低 OSX 版本?

4

2 回答 2

55

使用otool -l /path/to/binary并检查LC_VERSION_MIN_MACOSX加载命令;具体来说,版本字段。

例如,使用 10.8 SDK 编译的二进制文件,部署目标 ( -mmacosx-version-min) 10.8 应该是LC_VERSION_MIN_MACOSX这样的:

Load command 9
      cmd LC_VERSION_MIN_MACOSX
  cmdsize 16
  version 10.8
      sdk 10.8

而使用 10.8 SDK 编译且部署目标为 10.7 的二进制文件应具有如下LC_VERSION_MIN_MACOSX加载命令:

Load command 9
      cmd LC_VERSION_MIN_MACOSX
  cmdsize 16
  version 10.7
      sdk 10.8
于 2013-06-17T13:34:48.720 回答
9

当我构建现代 macOS 可执行文件时,未列出接受的答案中提到的加载命令。但是LC_BUILD_VERSION确实包含minosandsdk字段:

Load command 10
      cmd LC_BUILD_VERSION
  cmdsize 32
 platform 1
    minos 11.0
      sdk 11.1
   ntools 1
     tool 3
  version 609.8
于 2020-12-25T03:14:47.903 回答