Cygwin is a software package that sets up a Unix-like platform on a Windows (win32) system. Here are some specific things you need in that environment to build and use Netpbm. All these programs and libraries are optional parts of the cygwin package. Programs: 1) gcc suite 2) binutils 3) bash 4) dlltool 5) flex & byacc 6) patch 7) install 8) rm, ln, cp and other file utilities Libraries: 1) libtiff (cygtiff3.dll) 2) libpng (cygpng2.dll) 3) libjpeg6b (cygjpeg6b.dll) 4) libz (cygz.dll) Find Cygwin at http://sources.redhat.com/cygwin/ . One problem special to Windows is the common existence of directories with space in their names (e.g. Windows 2000's "Documents and Settings" directory. (Such filenames are possible on non-Windows systems, but are highly unconventional). Don't try to build Netpbm in such a directory or with files in such a directory. It ought to work, but it just doesn't. And the error messages are far from helpful, since those spaces completely change the nature of the commands that include them. One way to deal with this is to use the Cygwin "mount" facility to map the Windows path "c:/Documents and Settings/aaa/bbb/cccc/Distributions" to something short and friendly, such as /Distributions. MINGW ------ You can use Cygwin on Windows to build Netpbm to run on Windows, but have the Netpbm programs use Mingw code instead of Cygwin code. Two reasons to do this: - We don't appear to have a way to statically link Cygwin library routines into Netpbm, so you have to have a Cygwin library (DLL) installed on a system as well as Netpbm to run Netpbm. - If you link Netpbm with a Cygwin library (some believe even if the program links itself to a Cygwin library at run time), you cannot distribute the resulting Netpbm, or any extension of your own, unless you distribute it under GPL. That's because Cygwin is publicly distributed under GPL, so you probably got your permission to distribute Cygwin as part of Netpbm from GPL. A condition of that permission was that you distribute everything you wrap around Cygwin under GPL as well. Mingw is a small POSIX emulation library for Windows. See . Mingw comes with tools you can use to build Netpbm with the Mingw library, but you can just use the Cygwin tools if you prefer. tells how. There isn't much to it -- it's just a matter of telling the compiler to search for include files and link libraries in a different place, which is basically just a -mno-cygwin option and -I and -L options. You can easily add the compiler options you need at the bottom of config.mk after you create it with the automatic configurator ('configure'). Mingw does not have the Unix process management facilities (fork/wait, etc.), so Netpbm will build without some of its function if you use Mingw. Areas of Netpbm that require those facilities are so arcane you probably will not miss them.