compilar compilador como c++ c macos cross-compiling

compilador - compilar c++ en windows cmd



Cómo compilar para OS X en Linux o Windows? (11)

Me gustaría transferir mis aplicaciones C / C ++ a OS X.

No tengo una Mac, pero tengo Linux y Windows. ¿Hay alguna herramienta para esto?


  1. Obtenga " VMware Player "
  2. Obtener "imagen de Mac OS X vm "
  3. Compila / depura / integra y prueba tu código en el nuevo sistema operativo para asegurarte de que todo funciona

Cuando intenta obtener algo que funcione en múltiples plataformas, absolutamente debe compilar / ejecutar / integrar / probar en la plataforma deseada. No se puede simplemente compilar / ejecutar en una plataforma y decir "oh debería funcionar igual en la otra plataforma".

Incluso con un muy buen lenguaje multiplataforma como Java, se encontrará con problemas donde no funcionará exactamente igual en la otra plataforma.

La única forma que he encontrado que respeta mi tiempo / productividad / capacidad de iterar rápidamente en múltiples plataformas es usar una VM de las otras plataformas.

Hay otras soluciones como arranque dual y otras que no he mencionado, pero creo que no respetan mi productividad / tiempo.

Tome doble arranque como un ejemplo:

  1. Hago un cambio en el sistema operativo 1
  2. reiniciar en OS 2
  3. olvida algo en OS 1
  4. reiniciar en OS 1
  5. hacer un cambio en el sistema operativo 1
  6. reiniciar en OS 2 ... OTRA VEZ ...

BAM va 30 minutos de mi tiempo y no he hecho nada productivo.


Definitivamente necesitarás OS X de alguna manera. Incluso si no tienes una Mac, aún puedes probar algunas alternatives .


El desarrollo de Apple es una extraña bestia en sí misma. OS X usa un puerto de GCC con algunas modificaciones para que sea ''appley''. En teoría, es posible utilizar las fuentes de Apple GCC y toolchain, así como también el kernel de Apple y los encabezados de las bibliotecas y compilar un compilador cruzado en su máquina con Windows.

Por qué querrías ir por este camino está más allá de mí. Puedes tener un Mac mini barato de $ 600. El tiempo que invierta para que un compilador cruzado funcione correctamente (particularmente con un host de Windows para herramientas de Unix) probablemente le cueste más de $ 600.

Si está realmente interesado en hacer que su aplicación sea una plataforma cruzada, busque en Qt, wxWidgets o FLTK. Todos brindan soporte multiplataforma con cambios mínimos al código base. Al menos, de esa manera todo lo que necesita hacer es encontrar una Mac para compilar su aplicación, y eso no es demasiado difícil de hacer si tiene amigos técnicamente a quienes no les importa darle acceso SSH a su Mac.



Existen algunas configuraciones de compilador cruzado, pero casi todas están diseñadas para la compilación distribuida estilo distcc. Que yo sepa, no hay forma de apuntar directamente a la plataforma Mac sin tener una Mac. Lo más cercano que puede obtener sin recurrir a QT o wxWidgets es OpenStep con GNUStep o similar, pero esa no es una verdadera plataforma de Cocoa, solo muy cerca.


La respuesta corta es algo así como Tendrá que usar una biblioteca multiplataforma como QT . Hay IDE como QT Creator que te permitirá desarrollar en un SO y generar Makefiles para otros. Para obtener más información sobre el desarrollo multiplataforma, consulte los episodios multiplataforma de este podcast (tenga en cuenta que la serie no ha terminado y que aparecen nuevos episodios cada semana).

Como explican otras respuestas, probablemente pueda compilar para una Mac en Windows o Linux, pero no podrá probar sus aplicaciones, por lo que probablemente deba gastar los $ 600 para una Mac si está realizando una programación profesional, o si está trabajando en software de código abierto, encuentre un desarrollador con una Mac que lo ayude.


Necesitarías una cadena de herramientas para realizar una compilación cruzada para mach-o, pero incluso si la tuvieras, no tendrás las bibliotecas de Apple para desarrollar. No estoy seguro de cómo podrías portar sin ellos, desafortunadamente.


Para Linux, existe un compilador cruzado GCC precompilado (de las fuentes de GCC modificadas de Apple disponibles públicamente).

https://launchpad.net/~flosoft/+archive/cross-apple

Actualización para 2015

  1. Después de tantos años, el IDE estándar de la industria ahora es compatible con OSX / iOS / Android.

http://channel9.msdn.com/Events/Visual-Studio/Connect-event-2014/311

  1. RadStudio de Embarcadero también admite la construcción de aplicaciones OSX / iOS / Android en Windows.

  2. Esta answer de Thomas también proporciona una herramienta de compilación cruzada.

Para todas estas opciones, aún necesita un verdadero dispositivo Mac / i para probar la aplicación.


Parece haber algunos scripts que se han escrito para ayudarte a configurar la compilación cruzada para Mac; No puedo decir qué tan buenos son ni cómo es aplicable a su proyecto. En la documentación, se refieren a estas instrucciones para la compilación cruzada de 10.4, y http://devs.openttd.org/~truebrain/compile-farm/apple-darwin9.txt para la compilación cruzada de 10.5; Esas instrucciones pueden ser más útiles que la secuencia de comandos, dependiendo de qué tan bien la secuencia de comandos se adapte a sus necesidades.

Si su programa es gratuito o de código abierto, entonces puede que desee crear un archivo de puerto MacPorts (documentación here ) y permitir a los usuarios crear su programa utilizando MacPorts; esa es generalmente la forma preferida de instalar un software portátil de código abierto o gratuito en Mac OS X. Se sabe que MacPorts se ejecuta en Linux en el pasado, por lo que es posible desarrollar y probar su archivo Portfile en Linux (aunque obviamente necesitará para ser probado en una Mac).


Puede contratar un mac en la nube desde this sitio web. Puedes contratarlos desde $ 1, lo cual debería ser suficiente (a menos que necesites acceso de root, entonces estás viendo $ 49 +).


OSXCross un proyecto llamado OSXCross que apunta a OS X (10.4-10.9) desde Linux.

Actualmente es compatible con clang 3.2 hasta 3.8 (troncal) (puede usar el clang su dist).
Además, puede construir un GCC vainilla actualizado también (4.6+).

LTO funciona también, para ambos, clang y GCC .

Actualmente usa cctools-870 con ld64-242.

OSXCross