MinGW Toolchain

From BindleBinariesWiki
Jump to: navigation, search

These are my notes for compiling a GCC toolchain using MinGW. Binaries created with this toolchain were tested using the Windows XP SP3 and Windows 7.

These instructions for building a toolchain were tested in the following environments:

  • OS X 10.7.3
  • Slackware64 13.37 Linux

Updated: Syzdek 02:06, 27 April 2012 (AKDT)

Contents

Creating MinGW toolchain

Directories and variables

mkdir -p /usr/local/src/cross/src
mkdir -p /usr/local/src/cross/i386-w64-mingw32
mkdir -p /usr/local/src/cross/x86_64-w64-mingw32
MAKE_FLAGS="-j 2"
export MAKE_FLAGS

GNU Binutils

# Download Source:
mkdir -p /usr/local/src/cross/src
cd /usr/local/src/cross/src
test -f binutils-2.22.tar.bz2 || \
   wget http://ftp.gnu.org/gnu/binutils/binutils-2.22.tar.bz2
tar -xjvf binutils-2.22.tar.bz2

# i386 Compile and install:
mkdir -p /usr/local/src/cross/i386-w64-mingw32/binutils-2.22_build
cd /usr/local/src/cross/i386-w64-mingw32/binutils-2.22_build
../../src/binutils-2.22/configure --target=i386-w64-mingw32 \
        --prefix=/usr/local \
        --with-build-time-tools=/usr/local/bin
make ${MAKE_FLAGS}
make install
test -f /usr/local/i386-w64-mingw32/bin/windres || \
        ln -s /usr/local/bin/i386-w64-mingw32-windres \
                /usr/local/i386-w64-mingw32/bin/windres
test -f /usr/local/i386-w64-mingw32/bin/windmc || \
        ln -s /usr/local/bin/i386-w64-mingw32-windmc \
                /usr/local/i386-w64-mingw32/bin/windmc

# x86_64 Compile and install:
mkdir -p /usr/local/src/cross/x86_64-w64-mingw32/binutils-2.22_build
cd /usr/local/src/cross/x86_64-w64-mingw32/binutils-2.22_build
 ../../src/binutils-2.22/configure --target=x86_64-w64-mingw32 \
        --prefix=/usr/local \
        --with-build-time-tools=/usr/local/bin
make ${MAKE_FLAGS}
make install
test -f /usr/local/x86_64-w64-mingw32/bin/windres || \
        ln -s /usr/local/bin/x86_64-w64-mingw32-windres \
                /usr/local/x86_64-w64-mingw32/bin/windres
test -f /usr/local/x86_64-w64-mingw32/bin/windmc || \
        ln -s /usr/local/bin/x86_64-w64-mingw32-windmc \
                /usr/local/x86_64-w64-mingw32/bin/windmc

1st stage: MinGW w64

# Download Source:
mkdir -p /usr/local/src/cross/src
cd /usr/local/src/cross/src/
test -f mingw-w64-v2.0.2.tar.gz || \
   wget http://downloads.sourceforge.net/project/mingw-w64/mingw-w64/mingw-w64-release/mingw-w64-v2.0.2.tar.gz
tar -xzvf mingw-w64-v2.0.2.tar.gz

# i386 compile and install:
mkdir -p /usr/local/src/cross/i386-w64-mingw32/mingw-w64-v2.0.2_stage1
cd /usr/local/src/cross/i386-w64-mingw32/mingw-w64-v2.0.2_stage1
../../src/mingw-w64-v2.0.2/configure --host=i386-w64-mingw32 \
        --without-crt
make ${MAKE_FLAGS}
make install

# x86_64 compile and install:
mkdir -p /usr/local/src/cross/x86_64-w64-mingw32/mingw-w64-v2.0.2_stage1
cd /usr/local/src/cross/x86_64-w64-mingw32/mingw-w64-v2.0.2_stage1
../../src/mingw-w64-v2.0.2/configure --host=x86_64-w64-mingw32 \
        --without-crt
make ${MAKE_FLAGS}
make install

1st stage: GCC

# Download Source:
mkdir -p /usr/local/src/cross/src
cd /usr/local/src/cross/src
test -f gcc-4.5.2.tar.bz2 || \
        wget http://mirrors-us.seosue.com/gcc/releases/gcc-4.5.2/gcc-4.5.2.tar.bz2 
tar -xjvf gcc-4.5.2.tar.bz2

# i386 compile and install:
mkdir -p /usr/local/src/cross/i386-w64-mingw32/gcc-4.5.2_stage1
cd /usr/local/src/cross/i386-w64-mingw32/gcc-4.5.2_stage1
../../src/gcc-4.5.2/configure --target=i386-w64-mingw32 \
        --prefix=/usr/local \
        --without-newlib --disable-nls \
        --with-gnu-as --with-gnu-ld --disable-multilib \
        --with-build-time-tools=/usr/local/bin \
        --enable-languages="c" \
        --disable-shared --disable-threads --disable-libmudflap \
        --disable-libssp --disable-nls --disable-libgomp
make ${MAKE_FLAGS} all-gcc
make install-gcc

# x86_64 compile and install:
mkdir -p /usr/local/src/cross/x86_64-w64-mingw32/gcc-4.5.2_stage1
cd /usr/local/src/cross/x86_64-w64-mingw32/gcc-4.5.2_stage1
../../src/gcc-4.5.2/configure --target=x86_64-w64-mingw32 \
        --prefix=/usr/local \
        --without-newlib --disable-nls \
        --with-gnu-as --with-gnu-ld --disable-multilib \
        --with-build-time-tools=/usr/local/bin \
        --enable-languages="c" \
       --disable-shared --disable-threads --disable-libmudflap \
       --disable-libssp --disable-nls --disable-libgomp
make ${MAKE_FLAGS} all-gcc
make install-gcc

2nd stage: MinGW w64

# i386 compile and install:
mkdir -p /usr/local/src/cross/i386-w64-mingw32/mingw-w64-v2.0.2_stage2
cd /usr/local/src/cross/i386-w64-mingw32/mingw-w64-v2.0.2_stage2
../../src/mingw-w64-v2.0.2/configure --host=i386-w64-mingw32
make ${MAKE_FLAGS}
make install

# x86_64 compile and install:
mkdir -p /usr/local/src/cross/x86_64-w64-mingw32/mingw-w64-v2.0.2_stage2
cd /usr/local/src/cross/x86_64-w64-mingw32/mingw-w64-v2.0.2_stage2
../../src/mingw-w64-v2.0.2/configure --host=x86_64-w64-mingw32
make ${MAKE_FLAGS}
make install

2nd stage: GCC

# i386 compile and install:
mkdir -p /usr/local/src/cross/i386-w64-mingw32/gcc-4.5.2_stage2
cd /usr/local/src/cross/i386-w64-mingw32/gcc-4.5.2_stage2
../../src/gcc-4.5.2/configure --target=i386-w64-mingw32 --prefix=/usr/local \
        --without-newlib --disable-nls \
        --with-gnu-as --with-gnu-ld --disable-multilib \
        --with-build-time-tools=/usr/local/bin \
        --enable-languages="c,c++,objc"
make ${MAKE_FLAGS}
make install

# x86_64 compile and install:
mkdir -p /usr/local/src/cross/x86_64-w64-mingw32/gcc-4.5.2_stage2
cd /usr/local/src/cross/x86_64-w64-mingw32/gcc-4.5.2_stage2
../../src/gcc-4.5.2/configure --target=x86_64-w64-mingw32 --prefix=/usr/local \
        --without-newlib --disable-nls \
        --with-gnu-as --with-gnu-ld --disable-multilib \
        --with-build-time-tools=/usr/local/bin \
        --enable-languages="c,c++,objc"
make ${MAKE_FLAGS}
make install

GNU Libtool

# Download Source:
cd /usr/local/src/cross/src
wget http://mirror.team-cymru.org/gnu/libtool/libtool-2.4.2.tar.xz
xz -cd libtool-2.4.2.tar.xz |tar -xvf -

# i386 compile and install:
mkdir -p /usr/local/src/cross/i386-w64-mingw32/libtool-2.4.2_build
cd /usr/local/src/cross/i386-w64-mingw32/libtool-2.4.2_build
../../src/libtool-2.4.2/configure --host=i386-w64-mingw32 \
        --prefix=/usr/local/i386-w64-mingw32 --enable-ltdl-install \
        --disable-shared --enable-static
make ${MAKE_FLAGS}
make install

# x86_64 compile and install:
mkdir -p /usr/local/src/cross/x86_64-w64-mingw32/libtool-2.4.2_build
cd /usr/local/src/cross/x86_64-w64-mingw32/libtool-2.4.2_build
../../src/libtool-2.4.2/configure --host=x86_64-w64-mingw32 \
        --prefix=/usr/local/x86_64-w64-mingw32 --enable-ltdl-install \
        --disable-shared --enable-static
make ${MAKE_FLAGS}
make install

Additional libraries for toolchain

zlib

Depends upon GCC MinGW Toolchain.

# Download Source:
cd /usr/local/src/cross/src
test -f zlib-1.2.6.tar.bz2 || wget http://zlib.net/zlib-1.2.6.tar.bz2

# i386 compile and install:
cd /usr/local/src/cross/i386-w64-mingw32/
tar -xjvf ../src/zlib-1.2.6.tar.bz2
cd zlib-1.2.6
./configure \
        --prefix=/usr/local/i386-w64-mingw32 \
        --libdir=/usr/local/i386-w64-mingw32/lib \
        --includedir=/usr/local/i386-w64-mingw32/include \
        --static
make CC=i386-w64-mingw32-gcc \
        LDSHARED=i386-w64-mingw32-gcc \
        CPP="i386-w64-mingw32-cpp -E" \
        AR="i386-w64-mingw32-ar" \
        RANLIB=i386-w64-mingw32-ranlib
cp libz.a /usr/local/i386-w64-mingw32/lib/
cp zlib.h zconf.h /usr/local/i386-w64-mingw32/include/
chmod 644 /usr/local/i386-w64-mingw32/include/zlib.h  \
        /usr/local/i386-w64-mingw32/include/zconf.h

# x86_64 compile and install:
cd /usr/local/src/cross/x86_64-w64-mingw32/
tar -xjvf ../src/zlib-1.2.6.tar.bz2
cd zlib-1.2.6
./configure \
        --prefix=/usr/local/x86_64-w64-mingw32 \
        --libdir=/usr/local/x86_64-w64-mingw32/lib \
        --includedir=/usr/local/x86_64-w64-mingw32/include \
        --static
make CC=x86_64-w64-mingw32-gcc \
        LDSHARED=x86_64-w64-mingw32-gcc \
        CPP="x86_64-w64-mingw32-cpp -E" \
        AR="x86_64-w64-mingw32-ar" \
        RANLIB=x86_64-w64-mingw32-ranlib
cp libz.a /usr/local/x86_64-w64-mingw32/lib/
cp zlib.h zconf.h /usr/local/x86_64-w64-mingw32/include/
chmod 644 /usr/local/x86_64-w64-mingw32/include/zlib.h  \
             /usr/local/x86_64-w64-mingw32/include/zconf.h

bzip2

Depends upon GCC MinGW Toolchain.

# Download Source:
mkdir -p /usr/local/src/cross/src
cd /usr/local/src/cross/src
test -f bzip2-1.0.6 || wget http://bzip.org/1.0.6/bzip2-1.0.6.tar.gz

# i386 compile and install:
cd /usr/local/src/cross/i386-w64-mingw32/
tar -xzvf ../src/bzip2-1.0.6.tar.gz
cd bzip2-1.0.6
make PREFIX=/usr/local/i386-w64-mingw32 \
        CC=i386-w64-mingw32-gcc \
        AR=i386-w64-mingw32-ar \
        RANLIB=i386-w64-mingw32-ranlib \
        libbz2.a
cp libbz2.a /usr/local/i386-w64-mingw32/lib
cp bzlib.h /usr/local/i386-w64-mingw32/include

# x86_64 compile and install:
cd /usr/local/src/cross/x86_64-w64-mingw32/
tar -xzvf ../src/bzip2-1.0.6.tar.gz
cd bzip2-1.0.6
make PREFIX=/usr/local/x86_64-w64-mingw32 \
        CC=x86_64-w64-mingw32-gcc \
        AR=x86_64-w64-mingw32-ar \
        RANLIB=x86_64-w64-mingw32-ranlib \
        libbz2.a
cp libbz2.a /usr/local/x86_64-w64-mingw32/lib
cp bzlib.h /usr/local/x86_64-w64-mingw32/include

xz (liblzma.a)

Depends upon GCC MinGW Toolchain.

# Download Source:
cd /usr/local/src/cross/src
test -f xz-5.0.3.tar.bz2 || \
        wget http://tukaani.org/xz/xz-5.0.3.tar.bz2
tar -xjvf xz-5.0.3.tar.bz2

# i386 compile and install:
mkdir -p /usr/local/src/cross/i386-w64-mingw32/xz-5.0.3_build
cd /usr/local/src/cross/i386-w64-mingw32/xz-5.0.3_build
../../src/xz-5.0.3/configure --prefix=/usr/local/i386-w64-mingw32 \
        --host=i386-w64-mingw32 --disable-shared \
        --disable-xz --disable-xzdec --disable-lzmadec \
        --disable-assembler
make
make install

# x86_64 compile and install:
mkdir -p /usr/local/src/cross/x86_64-w64-mingw32/xz-5.0.3_build
cd /usr/local/src/cross/x86_64-w64-mingw32/xz-5.0.3_build
../../src/xz-5.0.3/configure --prefix=/usr/local/x86_64-w64-mingw32 \
        --host=x86_64-w64-mingw32 --disable-shared \
        --disable-xz --disable-xzdec --disable-lzmadec \
        --disable-assembler
make
make install

libpng

Depends upon GCC MinGW Toolchain and zlib.

# Download Source:
cd /usr/local/src/cross/src
test -f libpng-1.5.10.tar.xz || \
        wget http://downloads.sourceforge.net/project/libpng/libpng15/1.5.10/libpng-1.5.10.tar.xz
xz -cd libpng-1.5.10.tar.xz |tar -xvf -

# i386 compile and install:
mkdir -p /usr/local/src/cross/i386-w64-mingw32/libpng-1.5.10_build
cd /usr/local/src/cross/i386-w64-mingw32/libpng-1.5.10_build
../../src/libpng-1.5.10/configure --prefix=/usr/local/i386-w64-mingw32 \
        --host=i386-w64-mingw32 --disable-shared
make
make install

# x86_64 compile and install:
mkdir -p /usr/local/src/cross/x86_64-w64-mingw32/libpng-1.5.10_build
cd /usr/local/src/cross/x86_64-w64-mingw32/libpng-1.5.10_build
../../src/libpng-1.5.10/configure --prefix=/usr/local/x86_64-w64-mingw32 \
        --host=x86_64-w64-mingw32 --disable-shared
make
make install

libjpeg

Depends upon GCC MinGW Toolchain.

# Download Source:
cd /usr/local/src/cross/src
test -f jpegsrc.v8d.tar.gz || wget http://www.ijg.org/files/jpegsrc.v8d.tar.gz
tar -xzvf jpegsrc.v8d.tar.gz

# i386 compile and install:
mkdir -p /usr/local/src/cross/i386-w64-mingw32/jpeg-8d_build
cd /usr/local/src/cross/i386-w64-mingw32/jpeg-8d_build
../../src/jpeg-8d/configure --prefix=/usr/local/i386-w64-mingw32 \
        --host=i386-w64-mingw32 --disable-shared
make
make install

# x86_64 compile and install:
mkdir -p /usr/local/src/cross/x86_64-w64-mingw32/jpeg-8d_build
cd /usr/local/src/cross/x86_64-w64-mingw32/jpeg-8d_build
../../src/jpeg-8d/configure --prefix=/usr/local/x86_64-w64-mingw32 \
        --host=x86_64-w64-mingw32 --disable-shared
make
make install

libtiff

Depends upon GCC MinGW Toolchain and zlib.

# Download Source:
cd /usr/local/src/cross/src
test -f tiff-4.0.1.tar.gz || \
        wget ftp://ftp.remotesensing.org/pub/libtiff/tiff-4.0.1.tar.gz
tar -xzvf tiff-4.0.1.tar.gz

# i386 compile and install:
mkdir -p /usr/local/src/cross/i386-w64-mingw32/tiff-4.0.1_build
cd /usr/local/src/cross/i386-w64-mingw32/tiff-4.0.1_build
../../src/tiff-4.0.1/configure --prefix=/usr/local/i386-w64-mingw32 \
        --host=i386-w64-mingw32 --disable-shared
make
make install

# x86_64 compile and install:
mkdir -p /usr/local/src/cross/x86_64-w64-mingw32/tiff-4.0.1_build
cd /usr/local/src/cross/x86_64-w64-mingw32/tiff-4.0.1_build
../../src/tiff-4.0.1/configure --prefix=/usr/local/x86_64-w64-mingw32 \
        --host=x86_64-w64-mingw32 --disable-shared
make
make install

PCRE

Depends upon GCC MinGW Toolchain, zlib, and bzip2.

# Download Source:
cd /usr/local/src/cross/src
test -f pcre-8.30.tar.bz2 || \
        wget http://downloads.sourceforge.net/project/pcre/pcre/8.30/pcre-8.30.tar.bz2
tar -xjvf pcre-8.30.tar.bz2

# i386 compile and install:
mkdir -p /usr/local/src/cross/i386-w64-mingw32/pcre-8.30_build
cd /usr/local/src/cross/i386-w64-mingw32/pcre-8.30_build
../../src/pcre-8.30/configure --host=i386-w64-mingw32 \
        --prefix=/usr/local/i386-w64-mingw32 \
        --disable-shared --enable-unicode-properties \
        --enable-pcregrep-libz \
        --enable-pcregrep-libbz2
make
make install

# x86_64 compile and install:
mkdir -p /usr/local/src/cross/x86_64-w64-mingw32/pcre-8.30_build
cd /usr/local/src/cross/x86_64-w64-mingw32/pcre-8.30_build
../../src/pcre-8.30/configure --host=x86_64-w64-mingw32 \
        --prefix=/usr/local/x86_64-w64-mingw32 \
        --disable-shared --enable-unicode-properties \
        --enable-pcregrep-libz \
        --enable-pcregrep-libbz2
make
make install

GNU regex

WARNING: This has not been tested on MinGW W64.

Depends upon GCC MinGW Toolchain.

# Download Source:
cd /usr/local/src/cross/src
test -f regex-0.12.tar.gz || \
        wget http://ftp.gnu.org/old-gnu/regex/regex-0.12.tar.gz

# i386 compile and install:
cd /usr/local/src/cross/i386-w64-mingw32/
tar -xzvf ../src/regex-0.12.tar.gz
cd regex-0.12
CC=i386-w64-mingw32-gcc ./configure --prefix=/usr/local/i386-w64-mingw32
make; /usr/local/bin/i386-w64-mingw32-ar ru libregex.a regex.o
cp regex.h /usr/local/i386-w64-mingw32/include
cp libregex.a /usr/local/i386-w64-mingw32/lib

# x86_64 compile and install:
cd /usr/local/src/cross/x86_64-w64-mingw32/
tar -xzvf ../src/regex-0.12.tar.gz
cd regex-0.12
CC=x86_64-w64-mingw32-gcc ./configure --prefix=/usr/local/x86_64-w64-mingw32
make; /usr/local/bin/x86_64-w64-mingw32-ar ru libregex.a regex.o
cp regex.h /usr/local/x86_64-w64-mingw32/include
cp libregex.a /usr/local/x86_64-w64-mingw32/lib

OpenSSL Libraries

Depends upon GCC MinGW Toolchain, and zlib.

# Download Source:
cd /usr/local/src/cross/src
test -f openssl-1.0.1a.tar.gz || \
        wget http://www.openssl.org/source/openssl-1.0.1a.tar.gz

# i386 compile and install:
cd /usr/local/src/cross/i386-w64-mingw32
tar -xzvf ../src/openssl-1.0.1a.tar.gz
cd openssl-1.0.1a
./Configure --prefix=/usr/local/i386-w64-mingw32 no-shared \
        no-threads no-dso no-krb5 no-asm enable-static-engine  \
        --cross-compile-prefix=i386-w64-mingw32- \
        -L/usr/local/i386-w64-mingw32/lib \
        -I/usr/local/i386-w64-mingw32/include mingw
make
make install

# x86_64 compile and install:
cd /usr/local/src/cross/x86_64-w64-mingw32
tar -xzvf ../src/openssl-1.0.1a.tar.gz
cd openssl-1.0.1a
./Configure --prefix=/usr/local/x86_64-w64-mingw32 no-shared \
        no-threads no-dso no-krb5 no-asm enable-static-engine  \
        --cross-compile-prefix=x86_64-w64-mingw32- \
        -L/usr/local/x86_64-w64-mingw32/lib \
        -I/usr/local/x86_64-w64-mingw32/include mingw64
make
make install

OpenLDAP Libraries

Depends upon GCC MinGW Toolchain, zlib, and OpenSSL Libraries.

# Download Source:
cd /usr/local/src/cross/src
test -f openldap-2.4.31.tgz || \
        wget ftp://ftp.OpenLDAP.org/pub/OpenLDAP/openldap-release/openldap-2.4.31.tgz
tar -xzvf openldap-2.4.31.tgz

# i386 compile and install:
mkdir -p /usr/local/src/cross/i386-w64-mingw32/openldap-2.4.31_build
cd /usr/local/src/cross/i386-w64-mingw32/openldap-2.4.31_build
../../src/openldap-2.4.31/configure --host=i386-w64-mingw32 \
        --prefix=/usr/local/i386-w64-mingw32 \
        --disable-slapd --disable-shared --enable-static \
        CC=i386-w64-mingw32-gcc \
        LD=i386-w64-mingw32-ld \
        LIBS="-lws2_32 -lgdi32 -lcrypt32 -lz -lbz2" \
        PATH=/usr/local/i386-w64-mingw32/bin:$PATH
echo '#undef NEED_MEMCMP_REPLACEMENT' >>  include/portable.h
PATH=$PATH:/usr/local/i386-w64-mingw32/bin make depend
PATH=$PATH:/usr/local/i386-w64-mingw32/bin make
PATH=$PATH:/usr/local/i386-w64-mingw32/bin make install

 # x86_64 compile and install:
# Not working...
mkdir -p /usr/local/src/cross/x86_64-w64-mingw32/openldap-2.4.31_build
cd /usr/local/src/cross/x86_64-w64-mingw32/openldap-2.4.31_build
../../src/openldap-2.4.31/configure --host=x86_64-w64-mingw32 \
        --prefix=/usr/local/x86_64-w64-mingw32 \
        --disable-slapd --disable-shared --enable-static \
        CC=x86_64-w64-mingw32-gcc \
        LD=x86_64-w64-mingw32-ld \
        LIBS="-lws2_32 -lgdi32 -lcrypt32 -lz -lbz2" \
        PATH=/usr/local/x86_64-w64-mingw32/bin:$PATH
echo '#undef NEED_MEMCMP_REPLACEMENT' >>  include/portable.h
PATH=$PATH:/usr/local/x86_64-w64-mingw32/bin make depend
PATH=$PATH:/usr/local/x86_64-w64-mingw32/bin make
PATH=$PATH:/usr/local/x86_64-w64-mingw32/bin make install

SQLite

Depends upon GCC MinGW Toolchain.

# Download Source:
cd /usr/local/src/cross/src
test -f sqlite-autoconf-3071100.tar.gz || \
        wget http://www.sqlite.org/sqlite-autoconf-3071100.tar.gz
tar -xzvf sqlite-autoconf-3071100.tar.gz

# i386 compile and install:
mkdir /usr/local/src/cross/i386-w64-mingw32/sqlite-autoconf-3071100_build
cd /usr/local/src/cross/i386-w64-mingw32/sqlite-autoconf-3071100_build
../../src/sqlite-autoconf-3071100/configure  --prefix=/usr/local/i386-w64-mingw32 \
          --host=i386-w64-mingw32 --disable-shared
make
make install

# x86_64 compile and install:
mkdir /usr/local/src/cross/x86_64-w64-mingw32/sqlite-autoconf-3071100_build
cd /usr/local/src/cross/x86_64-w64-mingw32/sqlite-autoconf-3071100_build
../../src/sqlite-autoconf-3071100/configure  --prefix=/usr/local/x86_64-w64-mingw32 \
          --host=x86_64-w64-mingw32 --disable-shared
make
make install

Widget toolkit for toolchain

FLTK

Depends upon GCC MinGW Toolchain

# Download source:
cd /usr/local/src/cross/src
test -f || fltk-1.3.0-source.tar.gz \
        wget wget http://ftp.easysw.com/pub/fltk/1.3.0/fltk-1.3.0-source.tar.gz
tar -xzvf fltk-1.3.0-source.tar.gz

# i386 compile and install:
cd /usr/local/src/cross/i386-w64-mingw32/
tar -xzvf ../src/fltk-1.3.0-source.tar.gz
cd fltk-1.3.0
./configure  --prefix=/usr/local/i386-w64-mingw32 \
          --host=i386-w64-mingw32 --disable-shared
make || echo " "
make install || echo " "

# x86_64 compile and install:
cd /usr/local/src/cross/x86_64-w64-mingw32/
tar -xzvf ../src/fltk-1.3.0-source.tar.gz
cd fltk-1.3.0
./configure  --prefix=/usr/local/x86_64-w64-mingw32 \
          --host=x86_64-w64-mingw32 --disable-shared
make || echo " "
make install || echo " "

Compile with FLTK:

# i386 compile
i386-w64-mingw32-g++ -c fltkHello.cpp \
        `/usr/local/i386-w64-mingw32/bin/fltk-config --cxxflags`
i386-w64-mingw32-g++ -o fltkHello.exe fltkHello.o \
        `/usr/local/i386-w64-mingw32/bin/fltk-config --ldflags`
i386-w64-mingw32-strip fltkHello.exe

# x86_64 compile
x86_64-w64-mingw32-g++ -c fltkHello.cpp \
        `/usr/local/x86_64-w64-mingw32/bin/fltk-config --cxxflags`
x86_64-w64-mingw32-g++ -o fltkHello.exe fltkHello.o \
        `/usr/local/x86_64-w64-mingw32/bin/fltk-config --ldflags`
x86_64-w64-mingw32-strip fltkHello.exe

wxWidgets

Depends upon GCC MinGW Toolchain, and zlib.

# Download Source:
cd /usr/local/src/cross/src
test -f wxWidgets-2.9.3.tar.bz2 || \
        wget http://downloads.sourceforge.net/project/wxwindows/2.9.3/wxWidgets-2.9.3.tar.bz2
tar -xjvf wxWidgets-2.9.3.tar.bz2

# i386 compile and install:
mkdir -p /usr/local/src/cross/i386-w64-mingw32/wxWidgets-2.9.3_build
cd /usr/local/src/cross/i386-w64-mingw32/wxWidgets-2.9.3_build
../../src/wxWidgets-2.9.3/configure  --prefix=/usr/local/i386-w64-mingw32 \
          --host=i386-w64-mingw32 --disable-shared
make
make install

# x86_64 compile and install:
mkdir -p /usr/local/src/cross/x86_64-w64-mingw32/wxWidgets-2.9.3_build
cd /usr/local/src/cross/x86_64-w64-mingw32/wxWidgets-2.9.3_build
../../src/wxWidgets-2.9.3/configure  --prefix=/usr/local/x86_64-w64-mingw32 \
          --host=x86_64-w64-mingw32 --disable-shared
make
make install

Compile with wxWidgets:

# i386 compile
i386-w64-mingw32-g++ -c wxHello.cpp \
        `/usr/local/i386-w64-mingw32/bin/wx-config --cflags`
i386-w64-mingw32-g++ -o wxHello.exe wxHello.o --static \
        `/usr/local/i386-w64-mingw32/bin/wx-config --libs`
i386-w64-mingw32-strip wxHello.exe

# x86_64 compile
x86_64-w64-mingw32-g++ -c wxHello.cpp \
        `/usr/local/x86_64-w64-mingw32/bin/wx-config --cflags`
x86_64-w64-mingw32-g++ -o wxHello.exe wxHello.o --static \
        `/usr/local/x86_64-w64-mingw32/bin/wx-config --libs`
x86_64-w64-mingw32-strip wxHello.exe

Using MinGW toolchain

Compiling with toolchain

# set variables for 32 bit system cross compile
CC=i386-w64-mingw32-gcc
CFLAGS=-I/usr/local/i386-w64-mingw32/include
LDFLAGS=-L/usr/local/i386-w64-mingw32/lib
export CC CFLAGS LDFLAGS

# set variables for 64 bit system cross compile
CC=x86_64-w64-mingw32-gcc
CFLAGS=-I/usr/local/x86_64-w64-mingw32/include
LDFLAGS=-L/usr/local/x86_64-w64-mingw32/lib
export CC CFLAGS LDFLAGS

# simple build
${CC} -W -Wall -Werror ${CFLAGS} -c hello.c
${CC} -W -Wall -Werror ${CFLAGS} -c hola.c
${CC} -W -Wall -Werror ${LDFLAGS} -o greetings.exe hello.o hola.o

# GNU libtool build
libtool --mode=compile --tag=CC ${CC} ${CFLAGS} -c hello.c
libtool --mode=compile --tag=CC ${CC} ${CFLAGS} -c hola.c
libtool --mode=link --tag=CC ${CC} ${LDFLAGS} -o greetings.exe hello.o hola.o

Build using configure from GNU Autoconf

./configure --host=i386-mingw32 \
    CC=i386-mingw32-gcc \
    CFLAGS=-I/usr/local/i386-mingw32/include \
    LDFLAGS=-L/usr/local/i386-mingw32/lib
make

External links

Toolchain:

Additional Libraries:

Widget Toolkits:

Personal tools