Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Upgrading Cygwin x86 to x64 (32-bit vs 64-bit Cygwin)

Tags:

cygwin

I'm a long-time user of Cygwin. I'm running Win7/x64, but my Cygwin installation is 32-bit. At the time I installed it, 64-bit version was considered experimental. Now the Cygwin website lists 32-bit and 64-bit versions on their website without any special mentions or recommendations on which one to use.

As a programmer, my experience is: unless specifically designed for capabilities of 64-bit CPUs, very few applications can get any gains by being recompiled for a 64-bit CPU. They might use more memory, though, since each memory pointer now uses 8 bytes rather than 4.

So, my question is: is there any benefit to choose 64-bit Cygwin over 32-bit ones? Should I upgrade my 32-bit installation sooner or later?

Performance/memory benchmark results for common usage patterns (e.g. running common UNIX commands, particular shell scripts etc.) would be very welcome.

If you've upgraded your 32-bit Cygwin to 64-bit, please tell your story - was the upgrade worth it?

EDIT: I've been using 64-bit Cygwin for a while now, and haven't really noticed any differences - good or bad - from the 32-bit version.

like image 938
Gene Pavlovsky Avatar asked Apr 19 '16 12:04

Gene Pavlovsky


People also ask

Is Cygwin 32-bit or 64-bit?

Cygwin — A UNIX environment for the Windows Operating System. IMPORTANT NOTE: Cygwin is available in both a 32-bit version and a 64-bit version. If you have a 64-bit operating system (most of us do!) then you may use either version of Cygwin for this course.

What Cygwin 64?

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.

What site should I download Cygwin from?

Installation Steps Choose a download site. "http://mirrors.kernel.org" is a good choice. "http://cygwin.mirrors.hoobly.com" is another good one, in Pennsyvania. The next screen allows you to choose packages.

Is Cygwin still used?

Cygwin is still relevant if you wish to have native *nix commands available to you on the Windows platform.


1 Answers

After running 32-bit Cygwin at work for a number of years, I recently upgraded to 64-bit. It was quite painless as you can run the two installations side-by-side. For me, there was no noticeable difference in performance though I did not run any benchmarks. The biggest gain for me in upgrading was starting with a new fresh install without any of the cruft that built up over the last few years.

The one disadvantage that I had when running 32-bit Cygwin was that the WoW64 subsystem filesystem redirector silently redirects 32-bit applications. This has the result that running ls /cygdrive/c/Windows/System32/ in 32-bit Cygwin doesn’t actually display the contents of %WINDIR%\System32, but instead %WINDIR%\SysWOW64. Attempts to access files in the %WINDIR%\System32 directory, e.g., ls /cygdrive/c/Windows/System32/nbtstat.exe fail with the error message:

ls: cannot access /cygdrive/c/Windows/System32/nbtstat.exe: No such file or directory

This means that Windows commands installed in %WINDIR%\System32 such as nbtstat and dnscmd aren’t available without modifying the PATH. The work-around for accessing 64-bit Windows files was that the %SystemRoot%\sysnative pseudo-directory had to be used, e.g., to run the nbtstat command, use /cygdrive/c/Windows/Sysnative/nbtstat.

32-bit applications on 64-bit Windows

WoW64 (Windows 32-bit on Windows 64-bit) is a subsystem capable of running 32-bit applications. It is included on all 64-bit versions of Windows and creates a 32-bit environment to run unmodified 32-bit applications on a 64-bit system using DLLs to provide the necessary interfaces.

Windows uses the %SystemRoot%\system32 directory for its 64-bit library and executable files. This is done for backward compatibility reasons, as many legacy applications are hardcoded to use that path. When executing 32-bit applications, WoW64 transparently redirects 32-bit DLLs to SystemRoot%\SysWoW64, which contains 32-bit libraries and executables.

32-bit applications are generally not aware that they are running on a 64-bit operating system. 32-bit applications can access %SystemRoot%\System32 through the pseudo directory %SystemRoot%\sysnative.

For 64-bit applications (such as Windows Command Prompt, cmd.exe) there’s no filesystem redirection:

See also: File System Redirection

like image 104
Anthony Geoghegan Avatar answered Sep 28 '22 04:09

Anthony Geoghegan