Crear .exe de un archivo .c en GNU/Linux

Bueno, el caso es que me estoy poniendo a estudiar un poco mas seriamente el lenguaje C y tras tener varios programas básicos escrito y funcionando perfectamente en mi Archlinux, he querido probarlos en Windows. Casi toda la información que en encontrado por la red para compilar un .exe desde GNU/Linux esta obsoleta, los paquetes ya no existen o incluso el mismo yaourt me dice que estan sin soporte o huerfanos.

Dando mil y una vueltas por la red decidí ir a pedir consejo a pacman en una busqueda y allí obtuve la solución:

$ pacman -Ss mingw

y nos tira el resultado

captura-mingw1

Ya sabemos que instalar

$ sudo pacman -S mingw-w64-gcc

Este paquete trae un monton de compiladores, yo solo uso el de C a .exe pero podeis mirar aquí para ver si necesitais otro.

$ ls /usr/bin/ | grep mingw
i686-w64-mingw32-addr2line
i686-w64-mingw32-ar
i686-w64-mingw32-as
i686-w64-mingw32-c++
i686-w64-mingw32-cc
i686-w64-mingw32-c++filt
i686-w64-mingw32-cpp
i686-w64-mingw32-dlltool
i686-w64-mingw32-dllwrap
i686-w64-mingw32-elfedit
i686-w64-mingw32-g++
i686-w64-mingw32-gcc
i686-w64-mingw32-gcc-4.8.2
i686-w64-mingw32-gcc-ar
i686-w64-mingw32-gcc-nm
i686-w64-mingw32-gcc-ranlib
i686-w64-mingw32-gcov
i686-w64-mingw32-gfortran
i686-w64-mingw32-gnat
i686-w64-mingw32-gnatbind
i686-w64-mingw32-gnatchop
i686-w64-mingw32-gnatclean
i686-w64-mingw32-gnatfind
i686-w64-mingw32-gnatkr
i686-w64-mingw32-gnatlink
i686-w64-mingw32-gnatls
i686-w64-mingw32-gnatmake
i686-w64-mingw32-gnatname
i686-w64-mingw32-gnatprep
i686-w64-mingw32-gnatxref
i686-w64-mingw32-gprof
i686-w64-mingw32-ld
i686-w64-mingw32-ld.bfd
i686-w64-mingw32-nm
i686-w64-mingw32-objcopy
i686-w64-mingw32-objdump
i686-w64-mingw32-ranlib
i686-w64-mingw32-readelf
i686-w64-mingw32-size
i686-w64-mingw32-strings
i686-w64-mingw32-strip
i686-w64-mingw32-windmc
i686-w64-mingw32-windres
x86_64-w64-mingw32-addr2line
x86_64-w64-mingw32-ar
x86_64-w64-mingw32-as
x86_64-w64-mingw32-c++
x86_64-w64-mingw32-cc
x86_64-w64-mingw32-c++filt
x86_64-w64-mingw32-cpp
x86_64-w64-mingw32-dlltool
x86_64-w64-mingw32-dllwrap
x86_64-w64-mingw32-elfedit
x86_64-w64-mingw32-g++
x86_64-w64-mingw32-gcc
x86_64-w64-mingw32-gcc-4.8.2
x86_64-w64-mingw32-gcc-ar
x86_64-w64-mingw32-gcc-nm
x86_64-w64-mingw32-gcc-ranlib
x86_64-w64-mingw32-gcov
x86_64-w64-mingw32-gfortran
x86_64-w64-mingw32-gnat
x86_64-w64-mingw32-gnatbind
x86_64-w64-mingw32-gnatchop
x86_64-w64-mingw32-gnatclean
x86_64-w64-mingw32-gnatfind
x86_64-w64-mingw32-gnatkr
x86_64-w64-mingw32-gnatlink
x86_64-w64-mingw32-gnatls
x86_64-w64-mingw32-gnatmake
x86_64-w64-mingw32-gnatname
x86_64-w64-mingw32-gnatprep
x86_64-w64-mingw32-gnatxref
x86_64-w64-mingw32-gprof
x86_64-w64-mingw32-ld
x86_64-w64-mingw32-ld.bfd
x86_64-w64-mingw32-nm
x86_64-w64-mingw32-objcopy
x86_64-w64-mingw32-objdump
x86_64-w64-mingw32-ranlib
x86_64-w64-mingw32-readelf
x86_64-w64-mingw32-size
x86_64-w64-mingw32-strings
x86_64-w64-mingw32-strip
x86_64-w64-mingw32-windmc
x86_64-w64-mingw32-windres

El que yo usare y que me ha funcionado es este i686-w64-mingw32-gcc para pasar de .c a .exe para un S.O. windows de 32 bits y se usaria así:

$ i686-w64-mingw32-gcc archivo.c -o archivo.exe

captura-mingw2

Y ya lo tendremos compilado en .exe

Aquí una muestra corriendo en el cmd de wine

captura-mingw3

Y si lo vamos a usar demasiado lo suyo seria incluir un alias en nuestro bashrc para no tener que escribir tanto, pero eso ya sabeis hacerlo 😉

2 comentarios:

  1. Pingback: Bitacoras.com

  2. Genial, agregado a Favoritos!

    Saludos!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.