# # Run this Tcl script to generate the crosscompile.html file. # set rcsid {$Id: mingw.tcl,v 1.2 2000/07/31 19:16:32 drh Exp $} puts { Notes On How To Build MinGW As A Cross-Compiler

Notes On How To Build MinGW As A Cross-Compiler

} puts "

(This page was last modified on [lrange $rcsid 3 4] GMT)

" puts {

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

} proc Link {path {file {}}} { if {$file!=""} { set path $path/$file } else { set file $path } puts "$file" } puts {

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: } set ftpsite \ ftp://ftp.nanotech.wisc.edu/pub/khan/gnu-win32/mingw32/snapshots/gcc-2.95.2-1 Link $ftpsite puts { 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.

    mkdir /opt/mingw
    chown drh /opt/mingw
  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...

} puts {

Back to the SQLite Home Page