Про Cygwin

Що таке Cygwin?

Cygwin - це ?Linux-подібне середовище для Windows.

Він складається з двох частин:

  • DLL (cygwin1.dll), яка працює в якості емулятора, надаючи функціональність Linux API у вигляді середовища системних викликів POSIX (Portable Operating System Interface).
  • колекції інструментальних засобів, які надають відчуття та вигляд Linux.

Cygwin DLL працює на всіх не бета та не "реліз кандидат" Windows платформи ix86 починаючи з Windows 95, виключаючи Windows CE.

Сторінка проекту - http://www.cygwin.com/

Чим не є Cygwin?

  • Cygwin це не шлях для запуску рідних додатків Linux на Windows. Ви маєте перезібрати додаток з вихідного коду, якщо бажаєте його запустити під Windows.
  • Cygwin це не шлях до чарівного створення рідних додатків Windows з функціональністю UNIX®, такою як сигнали, ptys та інше.

Коротенька історія

Cygwin почав розроблятися в 1995 в Cygnus Solutions (зараз частина Red Hat Software). Першою річчю було покращення утиліт розробки (gcc, gdb, gas, тощо), щоб вони змогли генерувати та інтерпретувати об'єктні файли Win32. Наступним кроком було перенесення утиліт на Win NT/9x. Це можна було зробити переписом великих частин коду, щоб змусити працювати додатки в змісті Win32 API. Та це б значило трату величезної кількості часу на кожен додаток. Натомість, було використано суттєво інший підхід - написано бібліотеку (Cygwin DLL), яка й надавала необхідний UNIX-подібну функціональність, відсутню в Win32 API (fork, spawn, signals, select, sockets, та інше). Це й було названо новим інтерфейсом Cygwin API. Написавши один раз, стало можливим створювати працюючі додатки під Win32 використовуючи крос-компілятори в UNIX на базі бібліотеки.

З цього часу переслідувалася ціль створення рідних засобів, спроможних перезібрати себе самих під Windows 9x та NT. Оскільки жодна ОС не поставляється без стандартних утиліт UNIX (fileutils, textutils, bash ...), була необхідність створення GNU еквівалентів працюючих з Cygwin API. Більшість з тих засобів раніше збиралися лише в рідному середовищі, тому було модифіковано їхні конфігураційні скрипти для досягнення крос-компіляції. Окрім конфігураційних змін також було зроблено невеликі зміни до вихідного коду. Виконуючи ?bash із засобами розробки та користувацькими утилітами разом, Windows 9x та NT створювали вигляд та присмак UNIX з перспективи конфігураційних механізмів GNU. Самодостатність було досягнуто в бета версії реліза 17.1 в жовтні 1996.

Повний набір засобів Cygwin був доступний у вигляді монолітної інсталяції. В квітні 2000 року було об'явлено проект Cygwin Net Release, який постачався з рідною програмою Win32 - setup.exe для інсталяції чи поновлення кожного пакету окремо. Починаючи з цього Cygwin DLL та setup.exe зазнали значного розвитку.

Більш історичний погляд викладено в Geoffrey J. Noer's 1998 , "Cygwin32: A Free Win32 Porting Layer for UNIX® Applications" http://www.usenix.org/publications/library/proceedings/usenix-nt98/technical.html

--Uran 04:43, 13 Лют 2005 (EET)