linux - instalar - mingw 32 bits
¿Cómo compilo y vinculo un ejecutable de Windows de 32 bits usando mingw-w64? (1)
Eso depende de la variante de la cadena de herramientas que esté utilizando actualmente. Ambas variantes DWARF y SEH (que vienen a partir de GCC 4.8.0) son solo un objetivo único. Puede verlo usted mismo inspeccionando la estructura de directorios de sus distribuciones, es decir, contienen solo las bibliotecas con direccionamiento de 64 y 32 bits, pero no ambas. Por otro lado, las distribuciones de SJLJ antiguas simples son de hecho de doble objetivo, y para construir un destino de 32 bits, solo suministre el indicador -m32
. Si eso no funciona, simplemente compile con i686-w64-mingw32-g++
.
PRIMA
Por cierto, las tres bibliotecas de enlace dinámico (DLL) correspondientes que implementan cada modelo de excepción GCC son
-
libgcc_s_dw2-1.dll
(DWARF); -
libgcc_s_seh-1.dll
(SEH); -
libgcc_s_sjlj-1.dll
(SJLJ).
Por lo tanto, para averiguar qué modelo de excepción proporciona exactamente su distribución actual de MinGW-w64, puede:
- inspeccionar el directorio y la estructura de archivos de la instalación de MinGW-w64 con la esperanza de ubicar una de esas DLL (generalmente en un
bin
); o - cree un código real o de prueba en C ++ que implique el manejo de excepciones para forzar el enlace con una de esas DLL y luego vea en cuál de esas DLL depende el destino creado (por ejemplo, puede verse con Dependency Walker en Windows); o
- tome el enfoque de fuerza bruta y compile algunos códigos de prueba para ensamblar (en lugar de código de máquina) y busque la presencia de referencias como
___gxx_personality_v*
(DWARF),___gxx_personality_seh*
(SEH),___gxx_personality_sj*
(SJLJ); Consulte Obtención del modelo de excepción actual de GCC .
Estoy usando Ubuntu 13.04 e instalé mingw-w64 usando apt-get install mingw-w64
. Puedo compilar y vincular una versión de 64 bits de mi programa con el siguiente comando:
x86_64-w64-mingw32-g++ code.cpp -o app.exe
Que genera un archivo app.exe de 64 bits.
¿Qué banderas binarias o de línea de comando utilizo para generar una versión de app.exe de 32 bits?