new2 new2
WWW http://www.math.utah.edu/~beebe

GNU and UNIX utilities on the Microsoft Windows (3.x, 95, 98, NT, 2000, ME, and XP) platforms

Original version: Tue Feb 17 12:29:31 1998
Last updates: Fri Jun 25 17:44:32 2004     Fri Nov 12 15:34:49 2004     Wed Nov 2 19:05:35 2005     Mon Jul 5 16:54:39 2010                Valid HTML 3.2!

Introduction

Since the demand for GNU utilities, including a UNIX-like shell (bash) emacs, and compilers (gcc, g++, g77, gnat, ...) keeps cropping up, I created this Web page to record sources of such ports.

A related topic, running Microsoft Windows applications in GNU/Linux, is handled in a separate document.

Contributions, corrections, and comments are welcome; send them by email to me at beebe@math.utah.edu.

GNU and FSF

The GNU Software Project of the Free Software Foundation (FSF) is a magnificent effort of collaborative development of software which can be widely used, and further developed by anyone with an interest and skills to do so.

Use of most of the products of the GNU Project is governed by the GNU Public License. Generally, the intent of this license is to encourage use and distribution of this software in source code form, rather than to restrict it. Thus, the GNU Project coined the term copyleft, to distinguish their intent from the more restrictive licensing generally associated with copyright.

Through the Foundation, today, many millions of lines of high-quality software are freely available to hundreds of millions of human users of computers. The popular personal computer operating system, often called Linux, is really just the GNU system with the Linux kernel.

The FSF master archive is found at ftp://prep.ai.mit.edu/pub/gnu/; that site contains source code distributions of all of the GNU packages, which you can fetch and install at your site.

Ready-to-install binary distributions are rarely provided, because they are highly system dependent, and the GNU code runs on so many different systems that it would be impractical to maintain up-to-date binary distributions.

Recent packages are based on the GNU autoconfigure system, which allows builds, validation checks, and installation to be done on most UNIX systems with just one simple command, which I like to call the GNU incantation:

        ./configure && make all check install

Printing to networked printers

Many printers today have direct Ethernet network interfaces, yet Microsoft Windows 98 strangely fails to support them. It has two notions of a printer: a local printer is one connected via a serial or parallel port to the current machine, and a `network' printer is a printer connected via a serial or parallel port to another Microsoft Windows system somewhere on the local network. Thus, native Windows does not support printing to true network printers, or to printers attached to non-Windows systems.

Fortunately, there is a good low-cost solution available, thanks to excellent work by Glenn K. Smith at the University of Texas at Austin. He wrote a Windows 95/98 and NT 4.0 driver that handles the UNIX lpr protocol. Once you have installed the driver, following the very clear instructions provided with the distribution, you can print to true network printers, as well as to printers attached to any UNIX system that provides remote printer queue access.

For details, visit the software's Web site at http://www.utexas.edu/academic/otl/software/lpr/.

Software archives and sources

ftp://ftp.cs.washington.edu/pub/ntemacs and http://www.cs.washington.edu/homes/voelker/ntemacs.html

That second file has the critical information on how to install emacs from the binary distribution files.

emacs 19.34, emacs 20.2, gzip 1.2.4, gunzip 1.2.4, tar 1.11.2.

http://www.simtel.net/simtel.net/
Huge archive of shareware, freeware, and public domain programs for the IBM PC platform with Microsoft operating systems (Windows 3.x, Windows 95, and DOS).
ftp://ftp.simtel.net/pub/simtelnet/gnu/gnuish/ and http://www.simtel.net/pub/simtelnet/gnu/gnuish/gnuish_t.htm
Mirror of the GNUish project with GNU utilities ported to DOS and OS/2.
http://andlinux.org/
andLinux (Ubuntu Linux on Windows) [based on coLinux]
http://www.odforce.net/odwiki/index.php/UnixOnWindows new! Advice on setting up csh and tcsh under Windows (see the cygwin resources below).
http://sources.redhat.com/cygwin/ GNU + Cygnus + Windows = cygwin
http://mingw.sourceforge.net/ MinGW - Minimalist GNU for Windows: ``A collection of freely available and freely distributable Windows specific header files and import libraries combined with GNU toolsets that allow one to produce native Windows programs that do not rely on any 3rd-party C runtime DLLs.''
http://unxutils.sourceforge.net/ GNU utilities for Win32 (native, instead of running on an Unix-environment emulator)

From that site:

The Cygwin tools are ports of the popular GNU development tools and utilities for Windows 95, 98, and NT. They function by using the Cygwin library which provides a UNIX-like API on top of the Win32 API.

To install them, follow the link labeled install now. This will allow direct installation over the Internet.

For older versions, fetch the cdk.exe (27.5MB) and usertools.exe (12.7MB) files from http://www.cygnus.com/gnu-win32.

[Note added 11 December 1998: For Cygwin 20, fetch the full.exe and user.exe files instead.]

They are self-extracting archive files, so you just need to click on them to install them, and then follow the instructions shown in the installer window.

At the time of writing this, latest corresponds to B19, and there is an important update file in the b19.1-update directory that should also be installed.

Note added on [01-Apr-1999]: the latest release is now B20.1, available at ftp://go.cygnus.com/pub/sourceware.cygnus.com/cygwin/latest/full.exe with other download sites listed at http://sourceware.cygnus.com/cygwin/download.html

I found that in order to run them, by clicking on the cygnus icon in the c:\Cygnus\B19 directory (also accessible via the menu path Start -> Programs -> Cygwin32 Beta 19), the DOS environment needs to be enlarged from its ridiculously small default size. This used to require a line like

shell=c:\command.com c:\ /P /E:1024

in the c:\config.sys file, but can now be done more simply (at least in Windows 98): in the DOS window, click on the Properties icon (3rd from right on toolbar), select the Memory panel, choose 1280 instead of Auto in the Initial environment box, and then restart the program.

http://www.cs.virginia.edu/~lcc-win32  

The lcc-win32 package provides C and Fortran compilers for use in the Windows environment, in a complete GUI development system, also usable as standalone compilers. The Fortran compiler is the AT&T Fortran-to-C translator, f2c.

http://www.it.fht-esslingen.de/~zimmerma/software/ltools.html  

The ltools package provides support on MS DOS and Microsoft Windows for reading and writing GNU and UNIX filesystems on fixed media, and removable media, such as floppy disks, and IOmega ZIP and Jaz disks.

See the mtools package below for the reverse.

http://www.datafocus.com/
DataFocus NuTCRACKER: UNIX on Windows; see http://www.datafocus.com/technical/wn_ut.htm for a large list of supported UNIX utilities. This product does not appear to include any GNUware.
http://freenx.berlios.de/
FreeNX is a next-generation technology for remote display, somewhat like VNC.
http://shop.microsoft.com/store/products/ProductOverview.asp?intProductIID=692
Microsoft Windows NT Services for UNIX (SFU) offers 25 common UNIX commands, the the Korn shell, based on a subset of the Mortice Kern Systems (MKS) toolkit. It also includes facilities for file system resource sharing, remote administration, and password synchronization.
http://mtools.ltnb.lu/  

The mtools package provides support on BeOS, GNU, and UNIX for reading and writing MS DOS and Microsoft Windows filesystems on fixed media, and removable media, such as floppy disks, and IOmega ZIP and Jaz disks.

See the ltools package above for the reverse.

http://www.vmware.com/
VMware offers a commercial product that provides a virtual operating system layer between Intel x86 hardware, and one or more operating systems, allowing those operating systems to run simultaneously with full access to the hardware, without the need to reboot to switch between them. We have used this product since early March 2003 to host FreeBSD 5.0, NetBSD 1.6, OpenBSD 3.2, Solaris 9 x86, Plan 9, and Microsoft Windows on top of GNU/Linux, and recommend VMware highly. The idea has certainly been used before (IBM mainframes have done this for almost 30 years), and the product can provide a solution for people who need simultaneous access to multiple operating systems.
http://www.realvnc.com/
VNC (Virtual Network Computing) software provides servers and clients that permit throwing virtual desktops between machines, even ones running different operating systems. Apple Mac OS X, Microsoft Windows, and several flavors of Unix are supported. See also FreeNX.
http://www.netraverse.com
This company offers support for running Microsoft Windows applications on GNU/Linux, through a product called Win4Lin. I have no idea how it compares with the standard GNU/Linux wine (Windows Emulator) package.
http://www.cs.wisc.edu/~ghost/index.html

Ghostscript, Ghostview and GSview home page. These PostScript interpreters and viewers are from the developers at Aladdin Enterprises.

Important note: These are licensed under the Aladdin Ghostscript Free Public License, which is different from the GNU Public License. Approximately a year to a year and a half after release, Aladdin versions of this software are re-released with the GNU Public License and become available through the Free Software Foundation and the GNU archive sites.

I have prepared Windows 95 installation notes which you may find useful, since the Aladdin archive is large and complex.

http://www.gtlinc.com/Products/

Global Technologies Ltd., Inc. Common UNIX Environment; this company is a value-added reseller of the Bell Laboratories' CUE. Includes U/Win, a Unix-like operating environment with KornShellPlus for Windows.

U/Win has a home page at http://www.research.att.com/sw/tools/uwin where descriptions of the system, plus copies of the detailed technical papers about it, can be found. As of early April 1999, this is at version 2.0 beta.

Personal, unsupported, non-commercial, licenses of this software are free, subject to acceptance of a license agreement.

http://www.interix.com/
complete (commercial) UNIX system environment running natively on Microsoft Windows NT; for an Interix news story, see http://www.windowstechedge.com/wte-1999-01/wte-01-interix.html The article gives a good overview of what UNIX utilities are included, and what are missing.
http://www.colinux.org/
Cooperative Linux
http://www.opennt.com/
complete (commercial) UNIX system environment running natively on Microsoft Windows NT (precursor to Interix; see previous item)
http://softlab.icsd.aegean.gr/~dspin/sw/outwit/
outwit is shallow layer of very useful tools for Windows 95, 98, NT, and 2000 that help to automate many tasks, and can be used in conjunction with other UNIX/POSIX layers, as well as standalone.
http://www.winsite.com/ and ftp://wuarchive.wustl.edu/systems/ibmpc/win95/ and http://wuarchive.wustl.edu/systems/ibmpc/win95/
Washington University at St. Louis archive of Windows 95 software.
Win4Lin: Windows on top of GNU/Linux This is a licensed commercial product, and may required a modified GNU/Linux kernel, available from the vendor.

The research behind the software

For interesting background on the problem of porting UNIXware and GNUware to the Windows platforms, see particularly these articles, and others in the same proceedings:

@InProceedings{Korn:1997:PUW,
  author =       "David G. Korn",
  title =        "Porting {UNIX} to {Windows NT}",
  crossref =     "USENIX:1997:ATC",
  institution =  "AT\&T Labs-Research",
  pages =        "43--57",
  day =          "6--10",
  month =        jan,
  year =         "1997",
  bibdate =      "Wed Aug 13 10:48:45 MDT 1997",
  bibsource =    "http://www.usenix.org/cgi-bin/sortbib.pl?-sA",
  acknowledgement = ack-nhfb,
}

@InProceedings{Korn:1997:UUW,
  author =       "David G. Korn",
  title =        "{UWIN} --- {UNIX} for {Windows}",
  crossref =     "USENIX:1997:UWN",
  institution =  "AT\&T Laboratories",
  pages =        "133--145",
  day =          "11--13",
  month =        aug,
  year =         "1997",
  bibdate =      "Tue Sep 23 06:19:53 1997",
  bibsource =    "http://www.usenix.org/cgi-bin/sortbib.pl?-sA",
  acknowledgement = ack-nhfb,
}

@InProceedings{Walli:1997:OTU,
  author =       "Stephen R. Walli",
  title =        "{OPENNT(TM}): {UNIX} Application Portability to
                 {Windows NT(TM}) via an Alternative Environment
                 Subsystem",
  crossref =     "USENIX:1997:UWN",
  institution =  "Softway Systems, Inc.",
  pages =        "123--132",
  day =          "11--13",
  month =        aug,
  year =         "1997",
  bibdate =      "Tue Sep 23 06:19:56 1997",
  bibsource =    "http://www.usenix.org/cgi-bin/sortbib.pl?-sA",
  acknowledgement = ack-nhfb,
}

@InProceedings{Spinellis:2000:OUT,
  author =       "Diomidis D. Spinellis",
  title =        "{Outwit}: {UNIX} Tool-Based Programming Meets the
                 {Windows} World",
  crossref =     "USENIX:2000:UAT",
  pages =        "149--158",
  year =         "2000",
  bibdate =      "Tue Oct 15 09:53:32 2002",
  URL =          "http://www.usenix.org/events/usenix2000/general/spinellis.html",
  acknowledgement = ack-nhfb,
}

@Proceedings{USENIX:1997:UWN,
  editor =       "{USENIX}",
  booktitle =    "The USENIX Windows NT Workshop 1997, August 11--13,
                 1997. Seattle, Washington",
  title =        "The {USENIX} Windows {NT} Workshop 1997, August
                 11--13, 1997. Seattle, Washington",
  publisher =    pub-USENIX,
  address =      pub-USENIX:adr,
  day =          "11--13",
  month =        aug,
  year =         "1997",
  ISBN =         "1-880446-88-X",
  bibdate =      "Tue Sep 23 07:20:13 1997",
  bibsource =    "ftp://ftp.uu.net/library/bibliography",
  acknowledgement = ack-nhfb,
  location =     "Seattle, Washington",
}

@Proceedings{USENIX:2000:UAT,
  editor =       "{USENIX}",
  booktitle =    "2000 USENIX Annual Technical Conference: San Diego,
                 CA, USA, June 18--23, 2000",
  title =        "2000 {USENIX} Annual Technical Conference: San Diego,
                 {CA}, {USA}, June 18--23, 2000",
  publisher =    pub-USENIX,
  address =      pub-USENIX:adr,
  pages =        "350",
  year =         "2000",
  ISBN =         "1-880446-22-7",
  LCCN =         "????",
  bibdate =      "Mon Oct 14 07:43:52 2002",
  URL =          "https://www.usenix.org/publications/library/proceedings/usenix2000",
  acknowledgement = ack-nhfb,
}