Interested Article - Cygwin
- 2021-12-08
- 1
Cygwin (произносится /ˈsɪgwɪn/ ) — UNIX-подобная среда и оболочка командной строки для Microsoft Windows . Cygwin обеспечивает тесную интеграцию приложений, данных и ресурсов Windows с приложениями, данными и ресурсами UNIX-подобной среды. Из среды Cygwin можно запускать обычные приложения Windows, также можно использовать инструменты Cygwin из Windows.
Cygwin состоит из двух частей: динамически подключаемой библиотеки (
DLL
)
cygwin1.dll
, которая обеспечивает совместимость
API
и реализует значительную часть стандарта
POSIX
, и огромной коллекции приложений, которые обеспечивают привычную среду UNIX, включая
Unix shell
.
Изначально Cygwin был разработан компанией Cygnus Solutions , которую позднее приобрела Red Hat . Это свободное ПО , опубликованное под GNU General Public License версии 2. В настоящее время Cygwin разрабатывается сотрудниками Red Hat, NetApp и множеством добровольцев. Поддерживаются языки: C , C++ , Objective-C , Fortran , Gambas , Perl , Python , Ruby , Tcl , Ada , CLISP , Scheme , OCaml , Prolog , Self (Self/x86 ).
Подобные функциональные возможности предлагала также и Microsoft в своём пакете Services for UNIX , включающем в себя подсистему Interix , и Subsystem for UNIX-based Applications (в более новых версиях).
Описание
Cygwin представляет собой инструмент для портирования ПО UNIX в Windows и представляет собой библиотеку, которая реализует интерфейс прикладного программирования POSIX на основе системных вызовов Win32 . Кроме того, Cygwin включает в себя инструменты разработки GNU для выполнения основных задач программирования, а также и некоторые прикладные программы, эквивалентные базовым программам UNIX. В 2001 году в Cygwin был включён пакет X Window System .
Кроме того, Cygwin содержит библиотеку MinGW , позволяющую работать с библиотекой Microsoft MSVCRT ( Windows API ); библиотека MinGW менее требовательна к объёму оперативной и дисковой памяти, распространяется под более свободной лицензией и может работать с любым программным обеспечением, но функциональные возможности спецификации POSIX реализованы в ней не так полно, как в Cygwin.
Red Hat реализует библиотеку Cygwin под лицензией GNU GPL , таким образом, её можно использовать только в программах, распространяемых под GPL. Для распространения программ, использующих библиотеку Cygwin под лицензией, отличной от GPL, необходимо приобретение лицензии у RedHat.
На странице можно подписаться на рассылку, посвящённую Cygwin.
История
Работа над проектом Cygwin была начата в 1995 году Стивом Чемберленом ( англ. Steve Chamberlain ), программистом Cygnus, заметившим, что Windows NT и Windows 95 используют в качестве формата объектных файлов формат COFF . К тому времени в GNU уже была реализована поддержка архитектуры x86 , COFF , а также библиотека языка C newlib; таким образом, по крайней мере теоретически, не представляло затруднений получить из GCC кросс-компилятор , который бы создавал исполняемые файлы Windows. Это оказалось несложным и на практике. Вскоре появился прототип.
Следующим шагом было заставить компилятор работать в Windows, но для этого была необходима эмуляция многих функций Unix: к примеру, должен был работать скрипт . Этот скрипт нуждается в оболочке типа bash , которая, в свою очередь, требует наличия стандартных потоков ввода-вывода и системного вызова fork . Windows располагает подобными функциональными возможностями, и библиотека Cygwin лишь транслирует вызовы, исходящие от программ, управляя определёнными видами данных, такими как файловые дескрипторы .
В 1996 году к проекту Cygwin присоединились и другие программисты, так как стало очевидным, что Cygwin сделает возможным использование инструментов Cygnus на системах с Windows (до этого намечалось использовать DJGPP ). Этот вариант был особенно привлекательным, ведь кросскомпиляция могла бы производиться в трёх направлениях: можно было использовать мощную станцию Sun для сборки Windows-кросскомпилятора MIPS , что позволяло значительно экономить время. С 1998 года Cygnus предлагает пакет Cygwin в качестве самостоятельного продукта.
Интернационализация
До версии 1.7 Cygwin не имел поддержки Unicode и использовал только ANSI-варианты функций Win32; отсутствовала также и поддержка каких-либо кодировок, отличных от родных для Windows и OEM (так, в русскоязычной версии Windows Cygwin работала лишь с CP1251 и CP866 , но не KOI8-R , ISO 8859-5 , UTF-8 или какими-либо другими.
Начиная с версии 1.7 кодировкой по умолчанию является
Unicode
в форме
UTF-8
и, соответственно, по умолчанию используются
региональные настройки
(locale в англ.)
C.UTF-8
. При вызове функций Win32 Cygwin осуществляет трансляцию строк в кодировку UTF-16,
используемую в системах Windows
. Начиная с версии 1.7.2 Cygwin также может извлекать некоторую информацию из реестра Windows в соответствии с установками Language и Territory в региональных настройках.
Другая проблема заключалась в том, что консоль Cygwin (подобно CMD.EXE ) использовала кодировку OEM. Для обхода этого ограничения рекомендовалось запускать в Cygwin демоны или sshd и использовать эмулятор терминала с полной поддержкой UTF-8, например PuTTY или MinTTY (входит в комплект Cygwin). Начиная с версии 2.0 в качестве консоли Cygwin штатно использует MinTTY, который работает в кодировке UTF-8, что позволяет выводить текстовую информацию в UTF-8 напрямую. Также терминал осуществляет трансляцию вводимой с клавиатуры информации в UTF-8, в соответствии с используемой национальной раскладкой.
Работа с кириллицей
В современных версиях Cygwin работа с русскими символами не требует дополнительных настроек. Символы кириллицы поддерживаются в нейтральных
региональных настройках
LANG=C.UTF-8
, в том числе имена файлов, имена пользователей и данные реестра. Можно установить русскоязычные региональные настройки
LANG=ru_RU.UTF-8
. При этом включатся русскоязычные сообщения (у некоторых программ), даты по-русски (LC_TIME) и другие региональные настройки.
Примечания
- Vinschen C. — 2024.
- ↑
- Larry Hall. (англ.) (14 сентября 2004). Дата обращения: 27 апреля 2010. 25 августа 2011 года.
- . www.gliebe.de. Дата обращения: 24 декабря 2016. Архивировано из 10 июля 2016 года.
См. также
- DJGPP
- MinGW
- GnuWin32
- Cooperative Linux
- cwRsync
- Сервисы Microsoft Windows для UNIX
- — «аналог» Cygwin, более дружественный к его пользователю.
-
Ссылки
- 2021-12-08
- 1