MinGW Toolchain
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:
- wxWidgets official website