Red de conocimiento informático - Material del sitio web - Cómo ejecutar aplicaciones de Windows en Linux (1)Abril de 2004 Wine es un fascinante y ambicioso proyecto de código abierto que intenta resolver el complejo problema de ejecutar ejecutables de Windows en Linux. Aunque Wine no es un proyecto nuevo, las expectativas para el escritorio Linux y la creciente demanda de aplicaciones Linux lo hacen todavía relevante. Este artículo presenta Wine y sugiere varias formas de adquirir experiencia trabajando dentro de Wine. El proyecto Wine comenzó en 1993 y sus orígenes se remontan a la aparición de los emuladores de UNIX DOS y Windows a principios de los años 1990. El proyecto Wine comenzó como una adaptación de aplicaciones de 16 bits a Linux y, en unos pocos años, pudo ejecutar Microsoft Word y Excel en Linux. Desde hace tiempo se reconoce que la principal barrera para la adopción de Linux en el escritorio es la falta de aplicaciones. Los proveedores comerciales de aplicaciones de escritorio no están seguros de si deberían invertir tiempo y esfuerzo en portar sus aplicaciones de Windows a Linux, y esencialmente están esperando que Linux sea adoptado masivamente en el escritorio. Linux, por otro lado, requiere que las aplicaciones estén disponibles a escala en el escritorio. Este es un problema clásico del "huevo y la gallina", y Wine puede resolverlo ejecutando aplicaciones de Windows existentes en Linux. Qué puede hacer el vino El proyecto Wine es en realidad un proyecto dos en uno. Proporcionan un kit de desarrollo llamado Winelib para portar aplicaciones de Windows a Linux (y Unix), y un cargador de programas que permite que los binarios de Windows se ejecuten en Unix y sistemas similares. Este artículo se centra en este último; en Referencias se proporcionan enlaces a más información sobre Winelib. El cargador de programas Wine permite que Linux y otros sistemas operativos tipo Unix que se ejecutan en x86 carguen y ejecuten ejecutables de Windows x86, pero eso es sólo una parte del problema que resuelve. Dado que los ejecutables de Windows siempre se vinculan a otras bibliotecas que forman parte del sistema operativo Windows (como se muestra en la captura de pantalla de Dependency Walker en la Figura 1 más adelante en este artículo), Wine también implementa estas funciones internas de Windows en la mayor medida posible, que es Linux. comúnmente conocido como Win32 API5. Si bien Windows y Linux son muy diferentes, en un nivel básico comparten muchas similitudes con cualquier sistema operativo moderno, especialmente soporte para archivos y directorios, soporte para ejecutar múltiples programas simultáneamente, interfaz de usuario similar y soporte multimedia. No es un emulador Según WineHQ, "WINE significa Wine Is Not an Emulator (WINE no es un emulador). En cambio, Wine es una implementación de código abierto de la API de Windows sobre X y UNIX. Puede considerarlo como un Capa de compatibilidad de Windows. Wine no requiere Microsoft Windows ya que es una implementación alternativa que consta de cientos de códigos que no son de Microsoft, pero le permitirá ejecutar la mayoría de ellos en Linux u otros sistemas operativos similares a UNIX siempre que el sistema nativo DLL está disponible. Software de Windows." muestra una dependencia de callDLL.exe, un archivo ejecutable que se puede compilar a partir del código fuente proporcionado con este artículo.

Cómo ejecutar aplicaciones de Windows en Linux (1)Abril de 2004 Wine es un fascinante y ambicioso proyecto de código abierto que intenta resolver el complejo problema de ejecutar ejecutables de Windows en Linux. Aunque Wine no es un proyecto nuevo, las expectativas para el escritorio Linux y la creciente demanda de aplicaciones Linux lo hacen todavía relevante. Este artículo presenta Wine y sugiere varias formas de adquirir experiencia trabajando dentro de Wine. El proyecto Wine comenzó en 1993 y sus orígenes se remontan a la aparición de los emuladores de UNIX DOS y Windows a principios de los años 1990. El proyecto Wine comenzó como una adaptación de aplicaciones de 16 bits a Linux y, en unos pocos años, pudo ejecutar Microsoft Word y Excel en Linux. Desde hace tiempo se reconoce que la principal barrera para la adopción de Linux en el escritorio es la falta de aplicaciones. Los proveedores comerciales de aplicaciones de escritorio no están seguros de si deberían invertir tiempo y esfuerzo en portar sus aplicaciones de Windows a Linux, y esencialmente están esperando que Linux sea adoptado masivamente en el escritorio. Linux, por otro lado, requiere que las aplicaciones estén disponibles a escala en el escritorio. Este es un problema clásico del "huevo y la gallina", y Wine puede resolverlo ejecutando aplicaciones de Windows existentes en Linux. Qué puede hacer el vino El proyecto Wine es en realidad un proyecto dos en uno. Proporcionan un kit de desarrollo llamado Winelib para portar aplicaciones de Windows a Linux (y Unix), y un cargador de programas que permite que los binarios de Windows se ejecuten en Unix y sistemas similares. Este artículo se centra en este último; en Referencias se proporcionan enlaces a más información sobre Winelib. El cargador de programas Wine permite que Linux y otros sistemas operativos tipo Unix que se ejecutan en x86 carguen y ejecuten ejecutables de Windows x86, pero eso es sólo una parte del problema que resuelve. Dado que los ejecutables de Windows siempre se vinculan a otras bibliotecas que forman parte del sistema operativo Windows (como se muestra en la captura de pantalla de Dependency Walker en la Figura 1 más adelante en este artículo), Wine también implementa estas funciones internas de Windows en la mayor medida posible, que es Linux. comúnmente conocido como Win32 API5. Si bien Windows y Linux son muy diferentes, en un nivel básico comparten muchas similitudes con cualquier sistema operativo moderno, especialmente soporte para archivos y directorios, soporte para ejecutar múltiples programas simultáneamente, interfaz de usuario similar y soporte multimedia. No es un emulador Según WineHQ, "WINE significa Wine Is Not an Emulator (WINE no es un emulador). En cambio, Wine es una implementación de código abierto de la API de Windows sobre X y UNIX. Puede considerarlo como un Capa de compatibilidad de Windows. Wine no requiere Microsoft Windows ya que es una implementación alternativa que consta de cientos de códigos que no son de Microsoft, pero le permitirá ejecutar la mayoría de ellos en Linux u otros sistemas operativos similares a UNIX siempre que el sistema nativo DLL está disponible. Software de Windows." muestra una dependencia de callDLL.exe, un archivo ejecutable que se puede compilar a partir del código fuente proporcionado con este artículo.

Para el usuario medio, la complejidad de estas dependencias puede resultar asombrosa, pero no para cualquier programador de sistemas, que comprende perfectamente que el sistema operativo tiene que hacer mucho para ejecutar incluso el programa más simple. Mire la primera dependencia del ejecutable: USER32.DLL. En Windows, una DLL es una biblioteca de vínculos dinámicos, similar a un objeto disfrutado (archivo .so) en Linux. El archivo USER32.DLL normalmente lo proporciona el sistema operativo y se encuentra en C:\WINDOWS\system32 o C:\WINNT\system32. Directorio WINNT\system32. Este archivo contiene la implementación de funciones de interfaz de usuario en la API de Windows. Nuestro ejecutable llamará a algunas funciones en USER32.DLL, que luego llamará a otras funciones en NTDLL.DLL, y así sucesivamente. La mayoría de estas funciones están documentadas por Microsoft, pero muchas no. La falta de documentación es un gran obstáculo para Wine, que se analizará en detalle más adelante en este artículo. Ahora, veamos la segunda dependencia del ejecutable: la dependencia de SIMPLEDLL.DLL. Esta DLL se crea al compilar el código fuente adjunto a este artículo. Esta DLL implementa algunas funciones particularmente simples; se incluye como ejemplo de los diversos archivos binarios que se encuentran comúnmente en los discos de instalación. Como muestra nuestro ejemplo, un ejecutable típico de Windows tiene dos dependencias: una dependencia de los binarios proporcionados por el sistema operativo y una dependencia de los binarios que forman parte de la aplicación. También es importante tener en cuenta que las DLL son conocidas por ser difíciles de administrar, incluso dentro del sistema operativo Windows donde se generan (ver Recursos). En particular, el equipo de Wine ha creado con éxito un marco para ejecutar muchas aplicaciones comerciales de Windows en Linux. Actualmente, el proyecto Wine de código abierto tiene una poderosa plataforma para ejecutar archivos binarios de Windows e implementa parcialmente la API Win32. El proyecto aún se encuentra en su fase de prueba inicial (alfa) y muchas partes aún no están completas. Si bien Wine proporciona herramientas para ayudar a configurar, instalar y ejecutar aplicaciones, estas herramientas están dirigidas principalmente a programadores y todavía queda mucho trabajo por hacer para que estas herramientas sean accesibles para usuarios no técnicos. Corel en el pasado y CodeWeavers ahora han ayudado en este sentido. Ahora que entendemos los conceptos básicos de Wine, echemos un vistazo más de cerca a lo que hace Wine. Este artículo analizará una instalación pura de Wine en Linux sin particiones de Windows. Ejecutables de Windows: Wine admite totalmente la carga binaria de ejecutables de Windows (.exe y DLL). DLL: Wine tiene implementaciones internas de cientos de DLL de Windows, pero no muchas de ellas están completamente implementadas. Por ejemplo, userd32.dll contiene funciones relacionadas con la interfaz de usuario implementadas en Wine 92 de código abierto. COM: Esta es una tecnología de Windows utilizada por casi todas las aplicaciones grandes de Windows para admitir funciones como incrustar una hoja de cálculo de Excel en un documento de Word. Wine apoya esta tecnología. Registro: esta es otra tecnología clave utilizada por casi todas las aplicaciones de Windows, y Wine implementa alrededor de 90 de las API de administración del registro de Windows. Funciones del kernel: las funciones del sistema kernel también son bien compatibles.