Определите минимальную версию OSX, бинарный файл был скомпилирован для

При использовании Clang или GCC Darwin для создания исполняемых файлов для OSX флаг -mmacosx-version-min=version может использоваться для установки самой ранней версии OSX, в которой будет выполняться исполняемый файл.

Есть ли способ отследить назад от данного исполняемого файла, какой флаг использовался для его компиляции? То есть есть ли способ определить, какая минимальная версия OSX нацелена на данный исполняемый файл?

Ответы

Ответ 1

Используйте 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