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:

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