2010-08-13 22 views
5

Tengo un programa C que escribí en Linux que funciona muy bien. Ahora quiero ejecutarlo en Windows.Programa Run C escrito en Linux en Windows

¿Cómo puedo ejecutarlo fácilmente en Windows?

+1

¿Incluye algún código específico de Linux? ¿O solo usa la biblioteca estándar C y la API POSIX? – dreamlax

Respuesta

2

mejor manera de recompilarlo todo utilizando el compilador mingw.

manera fácil volver a compilar en un entorno cygwin.

+0

will cygwin generate .exe ?? – Tanaji

+0

@Tanaji: Sí, generará un archivo ejecutable de Windows. – dreamlax

3

La forma más sencilla es instalar el entorno de Cygwin, y compilar debajo de eso.

25

Abundando un poco en las respuestas de caf y jartieda ...

Cygwin es un intento de emular un (casi) completa el entorno de ejecución de POSIX en un proceso nativo de Windows. Es lo suficientemente completo como para que una sorprendente cantidad de código de la aplicación Unix simplemente se compile y se ejecute utilizando la familiar expresión ./configure && make && make install. Este truco se realizó mediante el suministro de una DLL que emula las llamadas al sistema POSIX utilizando la API de Windows. Basado en eso, obtienes una cadena de herramientas de GCC completa, bash, y todas las utilidades de línea de comando habituales a las que estás acostumbrado. Una desventaja es que el programa compilado depende de la DLL de Cygwin, lo que dificulta entregar el resultado a un sistema que no tiene instalado Cygwin y cuyo usuario no desea utilizar un shell de Unix.

MinGW es un puerto de la cadena de herramientas de GCC que genera aplicaciones nativas de Windows que dependen de la conocida biblioteca de tiempo de ejecución MSVCRT.DLL C (distribuida con Windows). No intenta emular un sistema operativo POSIX, pero las aplicaciones que se basan principalmente en las bibliotecas C estándar, a menudo se compilarán básicamente sin cambios.

MSYS es un entorno de tiempo de compilación que proporciona suficientes utilidades Unix (bash, inclusive) para permitir menudo ./configure a correr, y si el proyecto es compatible con los resultados, terminar la construcción con GCC de MinGW. El resultado es un ejecutable nativo de Windows que no depende de ninguna DLL que no use deliberadamente aparte de MSVCRT.DLL. Aunque el entorno MSYS sí era un tenedor de una primera versión del proyecto Cygwin, que está destinado principalmente a ser utilizado para proporcionar un lugar de tipo Unix para compilar aplicaciones nativas de Windows: uno sería en general no construir nuevas aplicaciones en función de su tiempo de ejecución ambiente.

Otro enfoque para la compilación para Windows es utilizar la cruz compilador MinGW en Linux. Varios desarrolladores principales de MinGW trabajan de esa manera, probando su producto ya sea en Wine o bajo Windows corriendo en una VM o en una PC por separado.

Si el programa tiene un componente de interfaz gráfica de usuario, entonces puede que tenga dificultades adicionales. Algunos marcos de GUI están disponibles para Linux y Windows. Qt, wxWidgets, y IUP todos saltan a la mente, pero hay otros por ahí.

Editar: He mejorado el párrafo anterior sobre MSYS hacer hincapié en que se pretende que sea un entorno en tiempo de compilación para los programas de desarrollo de aplicaciones que se ejecutan como nativas de Windows, y no un entorno POSIX completa como Cygwin.

Tenga en cuenta, también, que siempre hay la opción de portar el proyecto a uno de los compiladores más tradicionales para el desarrollo de Windows. Open Watcom, los compiladores de Borland y Microsoft tienen versiones gratuitas o de bajo costo, aunque a menudo no con licencias que hacen que la comunidad de fuentes abiertas sea del todo feliz.

Este enfoque probablemente requiera más esfuerzo porque las diferencias entre un entorno Linux y el entorno Windows se vuelven más visibles cuando también se cambia de una cadena de herramientas a otra. Esto es especialmente cierto en el caso de los compiladores de Microsoft que, históricamente, no cumplen tanto con los estándares como GCC.

+0

+1, pero debe mencionar que MSYS no está hecho para ser extendido con aplicaciones de usuario basadas en MSYS. Cygwin sirve ese propósito waaaay mejor. – rubenvb

+0

@rubenvb, buen punto. Tenía la intención de que esa distinción fuera más clara de lo que se decía hoy, así que intenté aclararla ahora. – RBerteig

1

Las respuestas que obtuvo hasta ahora se centran en instalar el GNU operating system en el núcleo de Windows; pero también podría usar herramientas freeware de Microsoft. Esta solución es probablemente más atractiva si desea continuar desarrollando en Linux, y solo hace un poco de trabajo para portar en Windows:

Microsoft ofrece una versión simplificada de su entorno de desarrollo como freeware: Visual Studio Express (download). Si su programa solo presenta IO, probablemente se compile sin modificaciones, porque Microsoft también suministra la biblioteca estándar de C.

Para GUI También recomiendo sinceramente el marco Qt. Está muy bien escrito y documentado; ahora está autorizado bajo el LGPL, por lo que puede vincularlo a aplicaciones propietarias sin ningún costo. Sin embargo, está escrito en C++, por lo que necesitaría cambiar el lenguaje de programación. Para la integración de QT con Visual Studio Express: creo que funciona, pero debes probarlo. Hace unos cinco años probé la integración de QT (propietario) y Visual Studio (profesional) para mi empleador, y funcionó a la perfección.

Cuestiones relacionadas