Boost für MinGW (win32) compilieren
Im folgenden möchte ich kurz die Schritte notieren, die zum compilieren der Bibliothek Boost
unter MinGW nötig waren. Das Tutorial bezieht sich auf die (zur Zeitder Erstellung) aktuellste Version 1.37.0. Das fertige Binärpaket kann
unter folgendem Link heruntergeladen und einfach über eine existierende MinGW-Installation entpackt werden.
- boost v1.37.0
- boost v1.35.0
Zusätzlich zu MinGW wird auch das Toolkit MSys (siehe http://www.mingw.org/wiki/msys)
benötigt. Es stellt eine minimale Unix-Umgebung bereit, in der man z.B. configure-Skripte ausführen kann.
Man beachte, dass Boost hauptsächlich aus Headern mit inline-Funktionen besteht, sodass nur wenig Compilier-Aufwand
entsteht. Der großteil des Codes wird direkt aus den header-Files eingebunden.
- Zunächst muss man die Boost-Bibliothek von http://www.boost.org/users/download/ herunterladen.
Das Source-Code Archiv entpackt man in einen beliebigen Ordner (bei mir C:\Development\libs\Boost_1.37.0\).
- Nun braucht man das Build-Tool bjam, dass sich unter der selben Adresse, wie in 1. findet. Laden Sie die
...-ntx86.zip Version herunter.
Dabei handelt es sich um die win32 binaries. Den Inhalt dieses Archis entpackt man ebenfalls in das boost-Verzeichnis. Es
sollte sich nur um einige wenige Dateien (vor Allem bjam.exe) handeln.
- Erzeugen Sie im Boost-Verzeichnis ein unterverzeichnis .\distrb\. Dort soll boost hininstalliert werden, sodass man später einfach alles in
diesem Verzeichnis nach MinGW kopieren kann.
- öffnen Sie die Datei .\tools\build\v2\user-config.jam. Dort fügen Sie (optional) die Zeile
using mpi ;um die Unterstützung für MPI
(Message Passing Interface) zu aktivieren.
- Nun startet man die MSys Konsole und wechselt mit cd ins Boost Verzeichnis. Dort wird zunächst folgender Befehl ausgeführt:
bjam --prefix=e:/development/libs/boost-1.37.0/distrib --toolset=gcc --layout=system --without-mpi --without-python --variant=release --link=dynamic --runtime-link=static stage
Die Optione --prefix legt das Installationsverzeichnis fest. --layout=system verhindert, dass bjam den Namen des
Compilers und die Boost-Version in die Dateinamen der Binaries aufnimmt. --toolset=gcc teilt mit, dass man mit dem GCC
Compiler überstzen möchte. Ansonsten wird bjam aufgefordert Bibliotheken zu erzeugen, die die STL statisch hinzulinken und dynamisch zum
Programm gelinkt werden. Die Pakete Python und MPI werden ausgeschlossen (die entsprechenden optionen können auch weggelassen werden!). Die Ergebnisse
landen im Unterverzeichnis .\stage\ des Boost-Verzeichnisses.
- Ein Abschließender Aufruf von:
bjam --prefix=e:/development/libs/boost-1.37.0/distrib --toolset=gcc --layout=system --without-mpi --without-python --variant=release --link=dynamic --runtime-link=static install
kopiert alle wichtigen Datein in das .\distrib\ Verzeichnis, aus dem sie dann nach MinGW kopiert werden können.