Вкл. 1:
Да. Библиотеки сокетов поставляются с Cygwin - многие базовые приложения, такие как веб-серверы , включены в базовый дистрибутив.
Вкл 2:
Да. Я думаю, что все системные вызовы 'section 2 и 3' в среде выполнения и библиотеке GNU C реализованы в cygwin runtume. Вы можете проверить это на страницах руководства, которые идут с Cygwin. Список системных вызовов и вызовов std lib, реализованных Cygwin, можно найти здесь .
Вкл 3: Да. Pthread включен в Cygwin. В списке, указанном в ссылке выше , также упоминается pthreads.
On 4: Все, что построено на библиотеках GNU, должно работать практически без изменений между Cygwin и Linux (при условии, что в Cygwin отсутствуют какие-либо зависимости). В зависимости от архитектуры процессора вам может потребоваться выравнивание слов , endianness и другие проблемы переноса, специфичные для архитектуры, но если вы ориентируетесь на Windows и Linux на Intel, в вашем коде будет мало если какие-либо проблемы с портированием, возникающие из-за архитектуры процессора.
On 5: Cygwin по умолчанию создаст программу из собственных общих библиотек, но GCC может выполнять кросс-компиляцию для других платформ. Вы можете (теоретически) установить GCC для кросс-компиляции для любой цели, поддерживаемой компилятором. В Интернете много ресурсов о кросс-компиляции с GCC, и я не думаю, что процесс будет существенно отличаться в Cygwin.
Обратите внимание, что двоичные файлы Cygwin не будут работать в Linux или наоборот. Вам все равно понадобятся отдельные сборки для обоих.
В 6: Не уверен - по-видимому, он включен в стандартную среду выполнения, возможно, из-за необходимости по какой-то причине обернуть API потоков Win32.
На 7: Не знаю - на g ++, наверное, одинаково на всех платформах. Видимо ошибка компилятора. Ответ Дэна Молдинга описывает это более подробно.
Вкл 8: Да. IIRC QT доступен в стандартных сборках и, безусловно, будет компилироваться на Cygwin. Как и в Linux / Unix, QT на Cygwin использует серверную часть X11, поэтому вам потребуется работающий X-сервер, такой как XMing .
Чтобы избежать зависимости от X-сервера, вы можете создавать приложения QT для Win32 API, . Это можно сделать с помощью MinGW , который представляет собой набор заголовочных файлов и библиотек для создания собственных приложений Win32 с GCC. MinGW можно использовать из среды Cygwin (пример GCC для кросс-компиляции Cygwin с целью, отличной от Cygwin), а установщик из cygwin.com дает вам возможность установить его.
MinGW вполне зрелый; у него есть все «обычные подозреваемые» - библиотеки и заголовочные файлы, которые вы ожидаете найти в среде разработки Unix / Linux GCC, и он очень стабилен. Это
часто является предпочтительным инструментом для создания портов Win32 программного обеспечения с открытым исходным кодом, потому что оно (а) бесплатно, (б) поддерживает библиотеки, используемые программным обеспечением, и (в) использует GCC, поэтому на него не влияют диалектические различия между MSVC и GCC.
Однако, эти диалектические различия в языке и доступных библиотеках (например, MSVC не имеет реализации getopt
) означают, что перенос программ между MinGW и MSVC может быть довольно сложным. Мой опыт - по общему признанию не очень обширный, поскольку я только сделал это несколько раз - что портирование приложений между MinGW32 и Linux легче, чем портирование между MinGW и MSVC. Очевидно, что приложения с непереносимыми зависимостями, такими как специфическое использование Win32 API, потребуют переписывания зависимых компонентов для новой платформы, но у вас будет гораздо меньше проблем с различиями в стандартных библиотеках, заголовочных файлах и языковом диалекте.
QT довольно неплохо справляется с обеспечением уровня абстракции платформы. Он предоставляет API для доступа к базе данных, потоков, ввода-вывода и многих других служб, а также графический интерфейс. Использование API QT, где это возможно, должно помочь с переносимостью, а ароматизированные библиотеки Unix / Linux, которые поставляются с MinGW, означают, что это может дать вам хорошую платформу для создания приложений, которые будут портировать между Win32 и Linux с относительно небольшим зависимым от платформы кодом.
РЕДАКТИРОВАТЬ: Пакеты разработки qt в Cygwin:
- qt4: каркас приложения Qt (источник)
- qt4-devel-tools: Qt4 Assistant, Designer и Linguist
- qt4-doc: документация по Qt4 API
- qt4-qtconfig: приложение для настройки рабочего стола Qt4
- qt4-qtdemo: демонстрации и примеры Qt4
Вам, вероятно, также понадобится gcc4-g ++ и некоторые другие фрагменты. Этот список на веб-сайте cygwin содержит список пакетов.