MinGW, also known as Minimalist GNU For Windows, is a version of the popular GCC compiler that builds Win95/Win98/WinNT binaries. See the website for details.
This page describes how you can build MinGW from sources as a cross-compiler running under Linux. Doing so will allow you to construct WinNT binaries from the comfort and convenience of your Unix desktop.
Here are the steps:
Get a copy of source code. You will need the binutils, the compiler, and the MinGW runtime. Each are available separately. As of this writing, Mumit Khan has collected everything you need together in one FTP site: ftp://ftp.nanotech.wisc.edu/pub/khan/gnu-win32/mingw32/snapshots/gcc-2.95.2-1 The three files you will need are:
Put all the downloads in a directory out of the way. The sequel will assume all downloads are in a directory named ~/mingw/download.
Create a directory in which to install the new compiler suite and make the new directory writable. Depending on what directory you choose, you might need to become root. The example shell commands that follow will assume the installation directory is /opt/mingw and that your user ID is drh.
su mkdir /opt/mingw chown drh /opt/mingw exit
Unpack the source tarballs into a separate directory.
mkdir ~/mingw/src cd ~/mingw/src tar xzf ../download/binutils-*.tar.gz tar xzf ../download/gcc-*.tar.gz unzip ../download/mingw-*.zip
Create a directory in which to put all the build products.
mkdir ~/mingw/bld
Configure and build binutils and add the results to your PATH.
mkdir ~/mingw/bld/binutils cd ~/mingw/bld/binutils ../../src/binutils/configure --prefix=/opt/mingw --target=i386-mingw32 -v make 2>&1 | tee make.out make install 2>&1 | tee make-install.out export PATH=$PATH:/opt/mingw/bin
Manually copy the runtime include files into the installation directory before trying to build the compiler.
mkdir /opt/mingw/i386-mingw32/include cd ~/mingw/src/mingw-runtime*/mingw/include cp -r * /opt/mingw/i386-mingw32/include
Configure and build the compiler
mkdir ~/mingw/bld/gcc cd ~/mingw/bld/gcc ../../src/gcc-*/configure --prefix=/opt/mingw --target=i386-mingw32 -v cd gcc make installdirs cd .. make 2>&1 | tee make.out make install
Configure and build the MinGW runtime
mkdir ~/mingw/bld/runtime cd ~/mingw/bld/runtime ../../src/mingw-runtime*/configure --prefix=/opt/mingw --target=i386-mingw32 -v make install-target-w32api make install
And you are done...