En 1: Sí. Las bibliotecas de zócalos se envían con Cygwin; muchas aplicaciones basadas en zócalos como web servers se incluyen en la distribución base.
En 2: Sí. Creo que todas las llamadas al sistema 'sección 2 y 3' en el tiempo de ejecución de GNU C y la biblioteca están implementadas por el runtume cygwin. Puede verificar esto en las páginas man que vienen con Cygwin. Una lista de llamadas al sistema y las llamadas lib std implementd por Cygwin se puede encontrar here.
El 3: Sí. Pthread está incluido en Cygwin.La lista a la que se hace referencia en el link above menciona pthreads también.
En 4: Cualquier cosa creada en contra de las librerías GNU debería funcionar con poco o ningún cambio entre Cygwin y Linux (suponiendo que no faltan dependencias en Cygwin). Dependiendo de la arquitectura de la CPU, puede tener que preocuparse por word alignment, endianness y otros problemas de puertos específicos de la arquitectura, pero si está apuntando a Windows y Linux en Intel, su código tendría pocos problemas de puertos que surjan de la arquitectura de la CPU.
En 5: Cygwin creará un programa contra sus propias bibliotecas compartidas de forma predeterminada, pero GCC puede realizar una compilación cruzada para apuntar a otras plataformas. Podría (en teoría) configurar GCC para realizar una compilación cruzada con cualquier objetivo admitido por el compilador. Hay plenty of resources on the web sobre la compilación cruzada con GCC, y no creo que el proceso sea sustancialmente diferente en Cygwin.
Tenga en cuenta que los binarios de Cygwin no se ejecutarán en Linux, o viceversa. Aún necesitarás compilaciones separadas para ambos.
El 6: No estoy seguro - en un supongo que está incluido en el tiempo de ejecución estándar, tal vez porque era necesario para envolver la API de Win32 enhebrado por alguna razón.
En 7:
No lo sé - es probablemente lo mismo en g ++ en todas las plataformas.
Aparentemente un error del compilador. Dan Moulding's Answer cubre esto con más detalle.
En 8: Sí. IIRC QT is available in the standard builds y seguramente se compilará en Cygwin. Al igual que con Linux/Unix, QT en Cygwin usa un back-end X11, por lo que necesitará tener un servidor X como XMing en ejecución.
Para evitar la dependencia de un servidor X es posible que desee build QT apps against the Win32 API,. Es posible hacerlo con MinGW, que es un conjunto de archivos de encabezado y bibliotecas para compilar aplicaciones Win32 nativas con GCC. MinGW se puede utilizar desde un entorno Cygwin (un ejemplo de GCC en la compilación cruzada de Cygwin con un objetivo que no es Cygwin) y el installer desde cygwin.com le ofrece la opción de instalarlo.
MinGW es bastante maduro; tiene todos los "sospechosos habituales": bibliotecas y archivos de cabecera que esperaría encontrar en un entorno de desarrollo GCC Unix/Linux y es muy estable. Es es a menudo la herramienta de elección para construir puertos Win32 de software de código abierto porque es (a) libre, (b) admite las bibliotecas utilizadas por el software y (c) usa GCC para que no se vea afectado por variaciones dialécticas entre MSVC y GCC.
Sin embargo, estas variaciones dialécticas en el idioma y las bibliotecas disponibles (por ejemplo, MSVC no viene con una implementación de getopt
) significa que los programas de migración entre MinGW y MSVC pueden ser bastante complicados. Mi experiencia, aunque no es terriblemente extensa, ya que solo he hecho esto algunas veces, es que transferir aplicaciones entre MinGW32 y Linux es más fácil que migrar entre MinGW y MSVC. Obviamente, las aplicaciones con dependencias no portátiles como el uso de API específico de Win32 requerirían que los componentes dependientes sean reescritos para la nueva plataforma, pero usted tendrá muchos menos problemas con las diferencias en las librerías estándar, archivos de encabezado y dialecto de lenguaje.
QT hace un buen trabajo al proporcionar una capa de abstracción de plataforma. Proporciona API para acceso a bases de datos, subprocesos, E/S y muchos otros servicios, además de la GUI.Usar las API de QT donde sea posible debería ayudar con la portabilidad y las librerías de Unix/Linux que vienen con MinGW significan que podría darle una buena plataforma para hacer aplicaciones que realizarán un puerto entre Win32 y Linux con relativamente poco código dependiente de la plataforma.
EDIT: Los paquetes de desarrollo de QT en Cygwin son:
- Qt4: framework de aplicaciones Qt (fuente)
- -devel-herramientas de Qt4: Qt4 Asistente, Designer y lingüista
- Qt4 -doc: documentación API Qt4
- qt4-qtconfig: Qt4 aplicación de configuración de escritorio
- qt4-qtdemo: demos y ejemplos Qt4
Probablemente también necesite gcc4-g ++ y algunas otras partes y piezas. This listing on the cygwin web site tiene una lista de los paquetes.
para usar QT en cygwin ¿qué paquete debe instalar? – SjB
qt4- * - ver la edición. – ConcernedOfTunbridgeWells
¡Gracias, buena respuesta en QT! – SjB