Cuando paso la bandera del compilador -mmacosx-version-min=10.5
, ¿qué significa? Creo que implica que el resultado binario es x86, no ppc, pero ¿son 32 bits o 64 bits? Estoy compilando en leopardo de las nieves, por lo que el binario de salida predeterminado es de 64 bits. No estoy pasando -universal
, no es binario universal de 32 bits a 64 bits, creo.¿qué implica macosx-version-min?
Respuesta
Esta opción será utilizada por las diversas macros de disponibilidad colocadas 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 SDK de 10.6). El uso de una API 10.6 mientras apuntas a 10.5 activará una advertencia y la API se vinculará con un atributo weak_import.
La mayoría de las cabeceras API de Apple contiene macros sobre la disponibilidad para cada clase, métodos, funciones o enumeraciones con el fin de declarar para cada uno de ellos:
- El sistema operativo mínimo soportado
- La desaparición
- La indisponibilidad
- ...
Las macros se parecen:
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, sólo depende de las arquitecturas disponibles en los binarios del SDK. Por ejemplo, con un SDK 10.5, puede orientar 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).
Como está usando Snow Leopard, puede orientar i386 (Intel/32bits), PPC (PowerPC/32bits) o x86_64 (Intel/64bits) de manera muy sencilla mediante el paso de una opción arquitectura como esto:
gcc -arch i386
o así (para los proyectos basados en configuración):
CFLAGS="-arch i386" LDFLAGS="-arch i386" ./configure
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.
de mis pruebas, también es importante que esta opción se pasa al paso de vinculación (como -arch); por lo que hace más que afectar las macros/preprocesamiento (como se podría deducir de otras respuestas).
Cuando se pasó al paso de compilación pero no se pasó al paso de enlace, encontré que las bibliotecas compartidas compiladas con 10.6 no se cargarían por debajo de 10.5.
-mmacosx-version-min=...
también influye en la elección predeterminada de C++ STL implementación (GNU o LLVM), y en este sentido, es igualmente importante para el compilador y el vinculador.
De hecho. Esto es particularmente importante en Mavericks, donde cambió la lib de C++ STL predeterminada. –
- 1. Comando de archivo Linux: ¿qué implica SYSV?
- 2. ¿Qué implica la programación de comercio electrónico?
- 3. ¿Qué implica IE en HTMLDocument y HTMLElement
- 4. código C que implica {}
- 5. MongoDB - upsert implica listas
- 6. ¿Qué implica el software propietario de fuente abierta?
- 7. ¿Por qué pasar por referencia implica un constructor de copia?
- 8. ¿Qué tarifas implica la publicación de una aplicación de Android?
- 9. ¿Qué implica la paradoja de Simpson en las pruebas AB?
- 10. ¿Implica C++ declaraciones de devolución?
- 11. Interfaz que implica la implementación del indexador
- 12. Doctest que implica caracteres de escape
- 13. expresión complicada que implica AND lógico (&&)
- 14. ¿El rendimiento de python implica continuar?
- 15. SELECCIONE DISTINCT implica algún tipo de resultado
- 16. ¿Qué implica el estado del proceso sbwait en la parte superior de FreeBSD?
- 17. MySQL: ¿Un campo de columna 'único' implica un índice, y si es así, por qué?
- 18. PostgreSQL: ACTUALIZACIÓN implica movimiento a través de particiones
- 19. SQL Server consulta de eliminación que implica dos tablas
- 20. SegFault desconcertante que implica el algoritmo de ordenación STL
- 21. Botón de Winforms: ¿Visible = falso implica Enabled = false?
- 22. Web scraping de Python que implica etiquetas HTML con atributos
- 23. ¿Cómo puedo obtener este código que implica unique_ptr para compilar?
- 24. ¿HATEOAS implica que las cadenas de consulta no son RESTful?
- 25. ¿La nueva URL (...). OpenConnection() implica necesariamente un POST?
- 26. ¿Ser bueno en jQuery implica ser bueno en JavaScript?
- 27. Perdida de memoria que implica solicitudes de jQuery Ajax
- 28. Consulta compleja de SQL que implica valores consecutivos
- 29. ¿Por qué el signo de exclamación en otra publicación de StackOverflow que implica el número de teléfono REGEX?
- 30. ¿Cómo la restricción del tipo `F [_]: Applicative` de Scalaz implica el uso de parámetros implícitos?
Tuve que incluir # para obtener estas macros en C. simple. Pero available.h también se incluye en stdlib.h –
Consulte también la respuesta de @ Kristian a continuación. Además, he encontrado que una versión mínima es igual o superior a 10.8 generará símbolos ligeramente diferentes (la vinculación del símbolo '_start' ha cambiado, probablemente en línea con la nueva biblioteca predeterminada de C++). – Ephemera