From: drh
+(This page was last modified on [lrange $rcsid 3 4] GMT)
+ MinGW or
+Minimalist GNU For Windows
+is a version of the popular GCC compiler that build Win95/Win98/WinNT
+binaries. See the website for details. This page describes how you can use MinGW configured as a
+cross-compiler running under RedHat 6.0 Linux to generate a
+binary for SQLite that runs under WinNT. Here are the steps: Get a copy of the MinGW compiler and all
+its associated tools that run under Linux. No binary versions of
+MinGW in this configuration are available for net downloads, as far
+as I know. You will probably have to download the source code and
+compile it all yourself.
+A separate bulletin describes how this
+can be done.
+When you are done, make sure the compiler and all its associated tools
+are located somewhere on your PATH environment variable.
+
+Download the Win32 port of GDBM from
+Roth Consulting. You can FTP a ZIP archive of the sources directly
+from
+ftp://ftp.roth.net/pub/ntperl/gdbm/source/Win32_GDBM_Source.zip.
+ Make a directory and unpack the Win32 port of GDBM. Manually build the GDBM library as follows:
+Download the SQLite tarball from
+
+http://www.hwaci.com/sw/sqlite/sqlite.tar.gz.
+Unpack the tarball and create a separate directory in which
+to build the executable and library.
+
+Create a "hints" file that will tell the SQLite configuration script
+to use the MinGW cross-compiler rather than the native linux compiler.
+The hints file should looks something like this: Configure and build SQLite:
+Notes On How To Compile SQLite Using The MinGW Cross-Compiler
+
}
+puts "
}
+}
+
+puts {
+}
+ regsub -all {&} [string trim $body] {\&} body
+ regsub -all {>} $body {\>} body
+ regsub -all {<} $body {\<} body
+ regsub -all {\(\(\(} $body {} body
+ regsub -all {\)\)\)} $body {} body
+ puts $body
+ puts {
+
+}
+puts {
+
+
+mkdir roth
+cd roth
+unzip ../Win32_GDBM_Source.zip
+
+
+i386-mingw32-gcc -DWIN32=1 -O2 -c *.c
+i386-mingw32-ar cr libgdbm.a *.o
+i386-mingw32-ranlib libgdbm.a
+cd ..
+
+
+tar xzf sqlite.tar.gz
+mkdir sqlite-bld
+cd sqlite-bld
+
+
+cat >mingw.hints <<\END
+ config_TARGET_CC=i386-mingw32-gcc
+ config_TARGET_CFLAGS='-O2'
+ config_TARGET_GDBM_LIBS=../roth/libgdbm.a
+ config_TARGET_GDBM_INC=-I../roth
+ config_TARGET_AR='i386-mingw32-ar cr'
+ config_TARGET_RANLIB=i386-mingw32-ranlib
+ config_TARGET_EXEEXT='.exe'
+END
+
+
+../sqlite/configure --with-hints=./mingw.hints
+make
+
+Back to the SQLite Home Page
+
+(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 build 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:
+ +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.
++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...
+} +puts { +