macos - sierra - mac os versiones
¿Qué implica macosx-version-min? (4)
Activa las advertencias del compilador para los métodos que aparecieron después de Mac OS X 10.5. No tiene nada que ver con la arquitectura.
Cuando paso el indicador del compilador -mmacosx-version-min=10.5
, ¿qué significa? Creo que implica que el resultado binario es x86, no ppc, pero ¿es de 32 o 64 bits? Estoy compilando en el leopardo de las nieves, así que el binario de salida predeterminado es de 64 bits. No estoy aprobando, -universal
, no es un binario universal de 32 bits-64 bits, creo.
Desde mis pruebas, también es importante que esta opción se pase al paso del enlace (como -arch); por lo tanto, hace más que afectar a las macros / preprocesamiento (como podría deducirse de otras respuestas).
Cuando se pasó al paso de compilación pero no al paso de enlace, encontré que las bibliotecas compartidas compiladas con 10.6 no se cargarían a menos de 10.5.
Esta opción será utilizada por las diversas macros de disponibilidad ubicadas en los encabezados. Esto significa que puede requerir una versión mínima del sistema operativo, incluso si tiene un SDK más reciente (es decir, el objetivo 10.5 con un 10.6 SDK). El uso de una API 10.6 mientras se dirige a 10.5 activará una advertencia y la API se vinculará con un atributo weak_import.
La mayoría de los encabezados API de Apple contienen macros de disponibilidad para cada clase, métodos, funciones o enumeraciones para declarar para cada una de ellas:
- El OS mínimo soportado
- El desprecio
- La indisponibilidad
- ...
Las macros se ven como:
-
AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER
-
AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED
- ...
En cuanto a la arquitectura, solo depende de las arquitecturas disponibles en los binarios del SDK. Por ejemplo, con un SDK 10.5, puede apuntar a cuatro arquitecturas (Intel / 32bits, PowerPC / 32bits, Intel / 64bits, PowerPC 64bits), mientras que con un SDK 10.6, solo puede apuntar a tres arquitecturas (Intel / 32bits, PowerPC / 32bits, Intel / 64bits).
Mientras usa Snow Leopard, puede apuntar a i386 (Intel / 32bits), ppc (PowerPC / 32bits) o x86_64 (Intel / 64bits) de manera muy simple al pasar una opción de arquitectura como esta:
gcc -arch i386
o así (para proyectos basados en configuración):
CFLAGS="-arch i386" LDFLAGS="-arch i386" ./configure
-mmacosx-version-min=...
también influye en la elección predeterminada de la implementación de C ++ STL (GNU o LLVM), y en este sentido, es igualmente importante para el compilador y el enlazador.