Quiero realizar una compilación cruzada de las bibliotecas de Qt (y, finalmente, de mi aplicación) para un destino de Windows x86_64 utilizando una máquina host Linux x86_64. Siento que estoy cerca, pero puedo tener un malentendido fundamental de algunas partes de este proceso.¿Cómo configuro Qt para la compilación cruzada de Linux a Windows?
Comencé instalando todos los paquetes mingw en mi máquina Fedora y luego modifiqué el archivo win32-g++
qmake.conf para adaptarme a mi entorno. Sin embargo, parece que me estoy quedando atrapado con algunas opciones de configuración aparentemente obvias para Qt: -platform
y -xplatform
. La documentación de Qt dice que -platform
debe ser la arquitectura de máquina host (donde se está compilando) y -xplatform
debe ser la plataforma de destino para la que desea implementar. En mi caso, establecí -platform linux-g++-64
y -xplatform linux-win32-g++
donde linux-win32-g ++ es mi configuración win32-g ++ modificada.
Mi problema es que, después de ejecutar configure con estas opciones, veo que invoca el compilador de mi sistema en lugar del compilador cruzado (x86_64-w64-mingw32-gcc). Si omito la opción -xplatform
y establezco -platform
en mi especificación de destino (linux-win32-g ++), invoca el compilador cruzado pero luego los errores cuando se encuentran algunas funciones relacionadas con Unix no están definidas.
Aquí hay algunos resultados de mi último intento: http://pastebin.com/QCpKSNev.
Preguntas:
Cuando compilación cruzada algo así como Qt para Windows desde un servidor Linux, si el compilador nativo vez ser invocados? Es decir, durante un proceso de compilación cruzada, ¿no deberíamos usar solo el compilador cruzado? No veo por qué el script de configuración de Qt intenta invocar el compilador nativo de mi sistema cuando especifico la opción
-xplatform
.Si uso un compilador cruzado de mingw, ¿cuándo tendré que tratar con un archivo de especificaciones? Los archivos de especificación para GCC todavía son una especie de misterio para mí, así que me pregunto si algún fondo aquí me ayudará.
En general, más allá de especificar un compilador cruzado en mi qmake.conf, ¿qué más podría tener que considerar?
Creo que necesita una compilación local de qmake para arrancar el resto de la compilación. ver también enlaces en http://stackoverflow.com/questions/1025687/cross-compile-in-linux-or-windows –
Ok, eso tiene sentido. Ahora acabo de encontrar otro problema, parece que estoy mezclando cadenas de herramientas nativas y cruzadas. El error en mi salida pastebin parece deberse a la llamada 'x86_64-w64-mingw32-as' en lugar de la nativa. –
Raramente marcó una pregunta de SO como favorita, pero esta fue una pregunta única e interesante con una respuesta genial. – jdi