MinGW-Cross-Compiling mit SDL
From NJH-Wiki
- 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:
- fakeroot
- alien
- any2deb
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
- Allgemeine Links zum MinGW-Cross-Compiling
- Spezielle Pakete

