2011-06-25 10 views
6

Ok, chicos, espero que esta sea una pregunta bastante simple: ¿hay alguna manera de ejecutar un programa C compilado bajo linux con gcc en un sistema operativo Windows? Por favor, no me diga que recompile en windows, ya que lo intenté pero parece que no el compilador de Windows tiene un tipo nativo de 128 bits, y el uso de bibliotecas bignum hace que mi programa sea 10 a 100 veces más lento. ¿Hay alguna manera de ejecutar realmente el binario de Linux en Windows? Alguien me contó algo sobre cygwin, pero no sé por dónde empezar. (Mi programa también debería ser portátil, así que no debería necesitar instalar programas y cosas en mi máquina).Ejecutando el programa linux gcc-compiled bajo Windows

Muchas gracias !! Matteo

+0

¿Has probado mingw? – Mat

+0

Lo hice, pero no reconoce __uint128_t ... ¿Alguna pista? –

Respuesta

8

Sin camino directo. Un ejecutable de Linux tiene un formato radicalmente diferente que Windows. Hay muchas otras opciones.

  • cygwin. Compile el programa con GCC bajo cygwin. Creo que construirá un exe de Windows que use la capa de compatibilidad de cygwin.

  • instale una máquina virtual como VBox. Instale un Linux en el VBox. Ejecute el programa allí.

  • http://www.andlinux.org tiene un marco para hacer esto. Nunca lo he intentado, pero hay un video tutorial http://www.youtube.com/watch?v=nULDHPCm9p4.

+1

Entonces, si compilo el programa bajo cygwin, resulta en un archivo .exe que puedo usar en cualquier computadora con Windows si puse como "cygwin1.dll" en el mismo directorio de .exe? –

+1

el cygwin dll tiene que estar en algún lugar donde Windows lo pueda encontrar. Honestamente, evito las ventanas y no recuerdo exactamente cómo configurarlas. –

+0

¡Hola! Traté de compilarlo bajo cygwin, pero ...! ¡Parece que ni siquiera reconoce el identificador __uint128_t! Me pregunto ... ¿en qué versión de cygwin se __uint128_t introducido? Mi versión actual de cygwin gcc es 4.3.4 ... –

3

Por favor, no me diga que recompilar debajo de las ventanas

Vas a tener que volver a compilar en Windows. ¡Lo siento!

Si realmente no puede encontrar un compilador con soporte para enteros de 128 bits, debe usar algún ensamblador para replicar las instrucciones que emite el compilador de Linux.

0

Utilice una máquina virtual para Linux como sistema operativo invitado en su sistema operativo Windows host. Ejecute su ejecutable bajo la VM. Pero compilar bajo combinación gcc-cygwin es la mejor opción.

3

Me parece que flinux podría hacerlo.

partir de la descripción:

... es un traductor binario dinámico ... capaz de ejecutar binarios de Linux en Windows sin modificar ...

Nota: No he probado esto .

+0

He probado FLinux para ejecutar un programa Linux de línea de comandos y funcionó. No es necesario recompilar el programa. – Phil

0

Desde Windows 10 Anniversary Update, Windows puede ejecutar de forma nativa binarios de Linux a través de Windows Subsystem for Linux (WSL), comúnmente conocido como Bash on Ubuntu on Windows.

Ver https://msdn.microsoft.com/en-us/commandline/wsl

Después de la instalación, puede abrir una sesión de bash, vaya a /mnt/<driveletter>/<path to your program> y ejecutar el archivo ejecutable como si estuviera ejecutando Linux.

Nota: WSL sigue siendo beta.