Вопрос по linux – Разница между GNUWin32 и cygwin

22

Я не могу понять разницу между этими двумя понятиями.

Похоже что один (GNUWin32) это слой поверх окон (например,MSYS) и
 Другой (Cygwin) это что-то еще (?)

Что это значит? Когда бы я использовал один поверх другого? Они оба подходят для одного и того же?

Я хочу использовать его в основном для git, но хочу оставить свои возможности открытыми для обучения и выполнения всех задач * nixy.

Есть ли другой инструмент для этого? Будетmsysgit быть лучше подходит для этого?
Существуют ли какие-либо ресурсы, которые исчерпывающе изучают различия всех этих * nix-платформ?

Кто-нибудь знает, каков статус GNUWin32 после Windows 7? Я в Windows 10. Я бы опубликовал отдельный вопрос, но держу пари, что он будет закрыт как не вопрос программирования. Sridhar-Sarnobat

Ваш Ответ

1   ответ
35

Cygwin это библиотека, которая стремится сделать программы UNIX способными компилироваться и запускаться в системах Windows с минимальными изменениями или без них, а также полный набор пакетированных инструментов и приложений UNIX, скомпилированных с этой библиотекой. Это почти полная оболочка для Windows. Он включает в себя X-сервер и огромное количество программ, которые вы можете найти в дистрибутиве Linux. Он отлично подходит для людей, которые хотят изучать или использовать командную строку UNIX в Windows.

MSYS в основном это порт инструментов UNIX, необходимых для создания пакетов в стиле GNU (сconfigure и т.д.) в системах Windows сMinGW компилятор. Он использует вариант библиотеки Cygwin, модифицированный, чтобы пожертвовать некоторой совместимостью для эффективности, и более дружественный к Windows.

GnuWin32 это просто порт некоторых инструментов GNU для Windows. Как и MSYS, он используетmsvcrt.dll, а также дополнительная библиотека для обеспечения некоторых функций совместимости с UNIX. По-видимому, его основная цель - позволить программам Windows и командным файлам напрямую использовать некоторые программы и библиотеки GNU.

По большей части они все предоставляют программы UNIX для Windows, но есть много тонких отличий, в том числе:

Intent. Cygwin is for people who want to use UNIX on their Windows OS. MSYS is for people who want to build Windows programs using the GNU/UNIX build tools. GnuWin32 is a port of individual GNU programs and libraries to Windows. Text files, particularly line endings. Cygwin lets you use CR/LF or LF. MSYS expects LF line endings. GnuWin32 programs expect CR/LF line endings. Supplied programs. In particular, Cygwin has a lot more packages, and GnuWin32 doesn't provide any shells.

Что касается Git, он доступен с Cygwin - эту версию можно использовать в каталоге Windows (доступный в/cygdrive). Также, как уже упоминалось, естьmsysgit.

Отличный ответ! КакGow фактор в? qwertymk
не знаю, никогда не использовал его. Не стесняйтесь упомянуть об этом в ответе.
@ ak2 ответ исправлен. Никогда не удосужился перепроверить, какие библиотеки использует MSYS, спасибо за информацию.
Я люблю и использую cygwin с годами, но нужно также остерегаться некоторых подводных камней. Пример: я установил cygwin со всем, что было установлено под землей, включая его git. И Cygwin был в моем пути пользователя. Затем я установил ruby (установщик Windows), а не Cygwin (даже не знаю, доступен ли он там). Но когда ruby попытался что-то сделать с установкой git от cygwin, все сломалось на уровне пути. Обработка пути Rubys и cygwins не может работать вместе. Решение? Удалите cygwin из пользовательского пути, используйте установку msysgit и внимательно посмотрите, что находится в моем пути поиска пользователей.
Это неверно в отношении MSYS. Программы MSYS основаны на MSYS DLL, являющейся ответвлением Cygwin DLL, и построены с использованием специального набора инструментов MSYS вместо набора инструментов MinGW. Однако целью MSYS является предоставление Unix-подобной среды для сборки собственных программ Windows с помощью набора инструментов MinGW.

Похожие вопросы