MinGW-Cross-Compiling mit SDL

From NJH-Wiki

Jump to: navigation, search
Autor 
Volker Grabsch


Contents

Veraltet!

Diese Howto ist unvollständig und inzwischen bedeutungslos, da mit dem MinGW cross compiling environment eine weitaus komfortablere Möglichkeit zur Verfügung steht:

make sdl sdl_image sdl_mixer sdl_ttf

:-)

Einleitung

In dieser Howto geht es darum, ein MinGW-System mit libSDL unter Debian zu installieren, um Cross Compiling für Windows zu ermöglichen. Unter Debian gibt es bereits fertige Pakete für den Cross-Compiler selbst, aber um Bibliotheken wie zlib oder SDL muss man sich noch selbst kümmern.

Ich lege hierbei besonderen Wert auf den "Debian-Weg". Außerdem sollen so viele vorcompilierte Pakete wie möglich verwendet werden.

Später kann man dann seine Programme folgendermaßen cross-compilieren:

./configure --host=i586-mingw32msvc
make

Bei SDL-Programmen kommt noch ein Parameter hinzu:

./configure --host=i586-mingw32msvc --with-sdl-prefix=/usr/i586-mingw32msvc
make

Vorbereitungen

Diese Howto geht von folgenden Gegebenheiten aus:

  • Installiert ist ein Debian/Sarge 3.1
  • Folgende Pakete sind installiert:

Falls die Pakete nicht installiert sind, kann man sie auch einfach nachinstallieren:

aptitude install fakeroot alien
wget http://www.profv.de/any2deb/any2deb_1.0-2_all.deb
dpkg -i any2deb_1.0-2_all.deb

Schritt für Schritt

MinGW

Den eigentlichen MinGW-Cross-Compiler und die benötigten Binutils brauchen wir nicht extra zu bauen. Es gibt sie glücklicherweise schon als Debian-Paket.

aptitude install mingw32

UPX

UPX ist ein sehr praktisches Werkzeug, um die entstandenen EXE-Dateien zu komprimieren. Dadurch sind sie kleiner und starten außerdem schneller.

aptitude install upx-ucl

NSIS

NSIS ist ein ausgezeichneter Windows-Installer. Man schreibt ein kleines NSIS-Script, ruft "make nsis" auf, und heraus kommt eine fertige, selbstenthaltende Installer-EXE.

aptitude install nsis

zlib

Die zlib brauchen wir nicht selbst zu compilieren. Wir laden stattdessen eine vorcompilierte zlib von GnuWin32 herunter. Aus ihr bauen wir ein Debian-Paket und installieren es:

wget http://heanet.dl.sourceforge.net/sourceforge/gnuwin32/zlib-1.2.3-lib.zip
any2deb mingw32-zlib1-dev 1.2.3 zlib-1.2.3-lib.zip /usr/i586-mingw32msvc
dpkg -i mingw32-zlib1-dev_1.2.3-2_all.deb

libjpeg

Die libjpeg brauchen wir auch nicht selbst zu compilieren. Wir laden eine vorcompilierte libjpeg von GnuWin32 herunter, bauen ein Debian-Paket und installieren es:

wget http://heanet.dl.sourceforge.net/sourceforge/gnuwin32/jpeg-6b-4-lib.zip
any2deb mingw32-libjpeg-dev 6b-4 jpeg-6b-4-lib.zip /usr/i586-mingw32msvc
dpkg -i mingw32-libjpeg-dev_6b-4-2_all.deb

libpng

Benötigt: zlib

Die libpng brauchen wir auch nicht selbst zu compilieren. Wir laden eine vorcompilierte libpng von GnuWin32 herunter, bauen ein Debian-Paket und installieren es:

wget http://heanet.dl.sourceforge.net/sourceforge/gnuwin32/libpng-1.2.8-lib.zip
any2deb mingw32-libpng12-dev 1.2.8 libpng-1.2.8-lib.zip /usr/i586-mingw32msvc
dpkg -i mingw32-libpng12-dev_1.2.8-2_all.deb

SDL

Das SDL-Projekt stellt sogar direkt vorcompilierte SDL-Bibliotheken für Windows bereit.

Leider eignet sich das Pakete nicht für any2deb, daher müssen wir es selbst entpacken und in ein temporäres Verzeichnis installieren:

wget http://www.libsdl.org/release/SDL-devel-1.2.9-mingw32.tar.gz
tar -xvz -f SDL-devel-1.2.9-mingw32.tar.gz
mkdir -p build-sdl/usr/i586-mingw32msvc
make -C SDL-1.2.9 prefix="`pwd`/build-sdl/usr/i586-mingw32msvc/" install

Dann in der build-sdl/usr/i586-mingw32msvc/bin/i386-mingw32msvc-sdl-config folgende Zeile ändern:

prefix=/usr/i586-mingw32msvc

Zum Schluss bauen wir uns daraus ein Debian-Paket und installieren es:

tar -cvz --owner=root --group=root -C build-sdl -f mingw32-libsdl1.2-dev-1.2.9.tgz .
fakeroot alien mingw32-libsdl1.2-dev-1.2.9.tgz
dpkg -i mingw32-libsdl1.2-dev_1.2.9-2_all.deb

smpeg

SDL_Mixer

SDL_Image

libxml2 xmlwrapp Fltk FLU


Weblinks

Personal tools