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
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
Y ya lo tendremos compilado en .exe
Aquí una muestra corriendo en el cmd de wine
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 😉
Pingback: Bitacoras.com
Genial, agregado a Favoritos!
Saludos!