Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Difference between GNUWin32 and cygwin

I can't seem to get a handle on the difference between the two.

It seems that one (GNUWin32) is an layer on top of windows (like MSYS) and the
other (cygwin) is something else (?)

What does that mean? When would I use one over the other? Are they both suited for the same thing?

I want to use it mainly for git but want to keep my options open for learning and doing all thing *nixy.

Is there another tool for this? Will msysgit be better suited for this?
Are there any resources that go through the differences of all of these *nix platforms exhaustively?

like image 768
qwertymk Avatar asked May 23 '12 02:05

qwertymk


People also ask

What does Cygwin stand for?

Cygwin is a collection of open source tools that allows Unix or Linux applications to be compiled and run on a Microsoft Windows operating system (OS) from within a Linux-like interface. Cygwin offers users a Linux-like experience in a Windows environment.

Is Cygwin still supported?

As of the creation of this article: Red Hat Cygwin is supported on all 32- and 64-bit versions of Windows since 2003 Server. Cygwin is available as both a 32- and 64-bit platform supporting 32 on 32-bit, 32 on 64-bit, and 64 on 64-bit installations.

What is cygwin1 DLL?

Cygwin is: a large collection of GNU and Open Source tools which provide functionality similar to a Linux distribution on Windows. a DLL (cygwin1. dll) which provides substantial POSIX API functionality.

How do I get Cygwin version?

To find the version of the Cygwin DLL installed, you can use uname -r as you would for a Unix kernel. As the Cygwin DLL takes the place of a Unix kernel, you can also use the Unix compatible command: head /proc/version , or the Cygwin specific command: cygcheck -V .


1 Answers

Cygwin is a library that endeavours to make UNIX programs able to compile and run on Windows systems with minimal or no modifications, and a comprehensive set of packaged UNIX tools and applications compiled with this library. It is almost a complete wrapper around Windows. It includes an X server and an awful lot of the programs that you can expect to find in a Linux distribution. It is great for people who want to learn or use the UNIX command line in Windows.

MSYS is mostly a port of the UNIX tools necessary to build GNU style packages (with a configure etc) on Windows systems with the MinGW compiler. It uses a variant of the Cygwin library modified to sacrifice some compatibility for efficiency, and is more Windows-friendly.

GnuWin32 is simply a port of some of the GNU tools to Windows. Like MSYS, it uses msvcrt.dll, as well as an additional library to provide some UNIX compatibility functions. Its main purpose appears to be to allow Windows programs and batch files to use some of the GNU programs and libraries directly.

For the most part, they all provide UNIX programs on Windows, but there are many subtle differences, including:

  • 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.

As for git, it is available with Cygwin - this version can be used in a Windows directory (accessible under /cygdrive). Also, as mentioned, there is msysgit.

like image 109
Michael Slade Avatar answered Sep 20 '22 16:09

Michael Slade