Когда я передаю флаг компилятора -mmacosx-version-min=10.5
, что это означает? я думаю, что это подразумевает, что двоичный файл результата является x86, не PPC, но является этим 32 бита или 64 бита? Я компилирую на снежном барсе, таким образом, выходной двоичный файл по умолчанию составляет 64 бита. Я не являюсь передающим -universal
, это не 32bit-64bit универсальный двоичный файл, я думаю.
Этот параметр будет использоваться различными макросами доступности, помещенными в заголовки. Это означает, что вам может потребоваться минимальная версия ОС, даже если у вас более поздняя версия SDK (т. Е. Таргетинг 10.5 с SDK 10.6). Использование API 10.6 при нацеливании на 10.5 вызовет предупреждение, и API будет связан с атрибутом weak_import.
Большинство заголовков API Apple содержат макросы доступности для каждого класса, методов, функций или перечислений, чтобы объявить для каждого из них:
Макросы выглядят так:
AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER
AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED
Что касается архитектуры доступных в SDK архитектур, это зависит только от двоичных файлов. Например, с 10.5 SDK вы можете настроить таргетинг на четыре архитектуры (Intel / 32 бит, PowerPC / 32 бит, Intel / 64 бита, PowerPC 64 бита), а с 10.6 SDK, вы можете настроить таргетинг только на три архитектуры (Intel / 32 бит, PowerPC / 32 бит, Intel / 64 бит).
Поскольку вы используете Snow Leopard, вы можете настроить таргетинг на i386 (Intel / 32 бит), ppc (PowerPC / 32 бит) или x86_64 (Intel / 64 бит) очень просто, передав такой вариант архитектуры:
gcc -arch i386
или подобный этому (для проектов на основе конфигурации):
CFLAGS="-arch i386" LDFLAGS="-arch i386" ./configure
Это вызывает предупреждения компилятора для методов, появившихся после Mac OS X 10.5. Это не имеет никакого отношения к архитектуре.