Small. Fast. Reliable.
Choose any three.

# Notes On How To Build MinGW As A Cross-Compiler

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:

1. 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:

   - binutils-19990818-1-src.tar.gz
   - gcc-2.95.2-1-src.tar.gz
   - mingw-20000203.zip

   Put all the downloads in a directory out of the way. The sequel will assume all downloads are in a directory named ~/mingw/download.

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

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

4. Create a directory in which to put all the build products.

   >     mkdir ~/mingw/bld

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

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

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

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