This document is a compulation of the notes I took while building my MinGW cross-compile tool chain. The first four packages are the base of the tool chain, the remaining packages allow me to distribute binaries without needing to include DLL's. This tool chain was compiled on OS X 10.5 and resulting binaries were tested on Windows 2000.
These are my notes from compiling a MinGW GCC cross compiler on 2007/11/14. This was tested on OS X 10.5.0 aka Leopard. The binaries produced by this tool chain were tested on Windows 2000. -- David Syzdek Wed Nov 14 07:52:16 AKST 2007
Contents |
tar -xjvf binutils-2.17.tar.bz2 mkdir binutils-2.17_build cd binutils-2.17_build ../binutils-2.17/configure --target=i386-mingw32 --prefix=/usr/local make -j 4 make install ln -s /usr/local/bin/i386-mingw32-windres /usr/local/bin/windres
mkdir mingw-runtime
cd mingw-runtime
tar -xjvf ../mingw-runtime-3.13.tar.bz2
mkdir -p /usr/local/i386-mingw32/bin
mkdir -p /usr/local/i386-mingw32/lib
mkdir -p /usr/local/i386-mingw32/include
mkdir -p /usr/local/i386-mingw32/doc
for DIR in bin doc include lib;do
cp -pvR ${DIR} /usr/local/i386-mingw32
done
mkdir -p /usr/local/i386-mingw32
mkdir w32api
cd w32api
tar -xjvf ../w32api-3.10.tar.bz2
for DIR in include lib;do
cp -pvR ${DIR} /usr/local/i386-mingw32
done
tar -xjvf gcc-4.2.2.tar.bz2 mkdir gcc-4.2.2_build cd gcc-4.2.2_build/ ../gcc-4.2.2/configure --target=i386-mingw32 --without-newlib --disable-nls \ --with-gnu-as --with-gnu-ld --disable-multilib --enable-libgcj \ --with-gxx-include-dir=/usr/local/i386-mingw32/include/c++/4.2.2 make -j 4 make install
tar -xjvf libtool-1.5.24.tar.bz2 mkdir libtool-1.5.24_build cd libtool-1.5.24_build/ ../libtool-1.5.24/configure --host=i386-mingw32 --prefix=/usr/local/i386-mingw32 make -j 4 make install
ftp://ftp.gnu.org/old-gnu/regex/
tar -xjvf regex-0.12.tar.bz2 cd regex-0.12 env CC=i386-mingw32-gcc ./configure --prefix=/usr/local/i386-mingw32 make /usr/local/bin/i386-mingw32-ar ru libregex.a regex.o cp regex.h /usr/local/i386-mingw32/include cp libregex.a /usr/local/i386-mingw32/lib
tar -xjvf openldap-2.3.38.tar.bz2 mkdir openldap-2.3.38_build cd openldap-2.3.38_build env CC=i386-mingw32-gcc CPPFLAGS=-I/usr/local/i386-mingw32/include \ LDFLAGS=-L/usr/local/i386-mingw32/lib \ ../openldap-2.3.38/configure --prefix=/usr/local/i386-mingw32 \ --host=i386-mingw32 --disable-slapd --disable-slurpd --disable-shared \ --disable-threads make depend LIBTOOL=/usr/local/i386-mingw32/bin/libtool make -j 4 LIBTOOL=/usr/local/i386-mingw32/bin/libtool make install
CC=i386-mingw32-gcc
CFLAGS=-I/usr/local/i386-mingw32/include
LDFLAGS=-L/usr/local/i386-mingw32/lib
export CC CFLAGS LDFLAGS
${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
CC=i386-mingw32-gcc
CFLAGS="-W -Wall -Werror -I/usr/local/i386-mingw32/include"
LDFLAGS="-W -Wall -Werror -L/usr/local/i386-mingw32/lib"
export CC CFLAGS LDFLAGS
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
./configure --host=i386-mingw32 \
CC=i386-mingw32-gcc \
CFLAGS=-I/usr/local/i386-mingw32/include \
LDFLAGS=-L/usr/local/i386-mingw32/lib
make