Cygwin и Wine оба являются слоями совместимости. Один из них реализует POSIX в Windows, а другой - Windows API в * nix. Почему необходимо перекомпилировать двоичные файлы для запуска в Windows с Cygwin, а приложения Windows можно запускать без перекомпиляции Wine?
3 ответа
На самом деле нет хорошего ответа на этот вопрос, кроме "они разные". Теоретически было бы возможно создать Cygwin-подобный слой для * nix, который позволил бы вам перекомпилировать приложения Windows для * nix, и Wine-подобный слой для Windows, который позволил бы вам запускать * nix приложения без перекомпиляции, но это не то, что делали люди.
Потому что есть одна Windows (хотя и в разных версиях) на одной платформе (x86), но миллиарды * nixes (SysV, BSD, Linux, Dec, ...), умноженные на их платформы, умноженные на поддерживаемые ими CPU.
Совместное использование кода в * nix всегда делилось источником из-за этого разнообразия.
Cygwin предоставляет среду Linux на компьютере со специальной архитектурой, является симулятором компьютера. С другой стороны, Wine предоставляет среду, в которой инструкции Windows преобразуются в инструкции Linux через библиотеки. Windows может быть выполнена только на x86 или x64 (теперь также ARM), а Linux может быть выполнен на множестве.