SSL/TLS-Netzwerkprogrammierung mit Boost.Asio, Teil 1: Grundlagen

Seite 4: Beispielprojekt

Inhaltsverzeichnis

Die gesamten Quelltexte des WOPR-Projekts befinden sich im Tarball wopr-3.0.tar.bz2 . Das Konfigurieren des Build-Prozesses übernimmt das im Open-Source-Bereich bekannte configure-Script. Für Visual Studio 2013 und 2015 finden sich Solutions im Unterverzeichnis vs2013 beziehungsweise vs2015.

Das Kompilieren erfordert einen C++11-konformen Compiler wie GNU gcc ab 4.7, LLVM clang ab 3.3 oder Xcode ab Version 5. Trotz der fehlenden POSIX-Kompatibilität ist das Kompilieren des WOPR-Servers und des synchronen Terminals auch mit Visual Studio möglich (getestet mit VS 2013).

Einige Compiler ohne C++-11-Unterstützung funktionieren mit dem configure-Prozess ebenfalls. Dazu gehören Sun Solaris Studio beziehungsweise Sun C++ und IBM XL C/C++. Letzterer funktionierte auf z/Linux im Test bestens, scheiterte hingegen auf AIX. Eine Liste von getesteten Systemen befindet sich in der Datei COMPATIBILITY.txt im Wurzelverzeichnis des WOPR-Tarballs.

OpenSSL ist für das weitere Vorgehen vorausgesetzt, da es den TLS/SSL-Teil abbildet. Auf aktuellen Unix-Systemen wie AIX, Solaris und den BSD-Varianten ist OpenSSL inklusive Header-Dateien und Entwicklungsbibliotheken meist bereits bei der Systeminstallation mit von der Partie. Auf Linux müssen die Entwicklungspakete installiert sein. Auf OS X kommen die OpenSSL-Header und Entwicklungsbibliotheken mit Xcode auf das System. Nähere Informationen zu den Unixoiden stehen in der Datei INSTALL im Tarball von WOPR 3.00.

Bei der Verwendung von Visual Studio 2013 oder 2015 bietet sich eine Binär-Distribution von OpenSSL an. Die Tests für diesen Artikel erfolgten mit der auf OpenSSL.org genannten Distribution von Shining Light Productions. Dort sind die 32-Bit- und 64-Bit-Versionen verfügbar. Sinnvoll ist die Installation der neuesten Version der Nicht-Light-Variante. Wer sowohl für 32 als auch für 64 Bit bauen möchte, installiert beide Versionen in separate Verzeichnisse.

Entwickler benötigen zum Bauen des Beispielsprojekts schließlich noch Boost. Viele Linux-Distributionen und auch Cygwin unter Windows liefern Lib- und Devel-Pakete mit zumindest recht aktuellen Versionen. Für Visual Studio bietet Boost selbst eine Binär-Distribution über Sourceforge zum Download an. OS-X-Nutzer finden Boost in den MacPorts. Auch die BSD-Varianten haben zumeist Binärpakete im Angebot. Ansonsten können BSD-Anwender pkgsrc bemühen, um Binärpakete zu bauen und zu installieren.

Die Mindestvoraussetzung für das WOPR-Beispiel ist Boost 1.40. Diese moderate Anforderung ergibt sich aus Boot.Program_Options, nicht aus Boost.Asio. Beim Schreiben des Artikels war bereits die Version 1.59 aktuell.

Wer keine fertige Boost-Distribution nutzen kann oder will, darf selbst kompilieren: Nach dem Entpacken des bei boost.org heruntergeladenen Archivs mit den Quelltexten startet der Nutzer dazu aus dem Boost-Verzeichnis auf Unix-like-Systemen mit

./bootstrap.sh

oder auf Windows in einem Visual-Studio-Commandline-Window mit

bootstrap.bat

das Konfigurieren des Boost-Builds. Compiler und Einstellungen erkennt der Bootstrap-Prozess in der Regel selbständig. Das Bauen der Bibliothekensammlung erfolgt unter Unix/Linux/Cygwin mit

./b2

und unter Windows mit Visual Studio mit

b2

Die Installation übernimmt unter Unix & Co. ein

./b2 install --prefix=Pfad

und unter Windows

b2 install --prefix=Pfad

"Pfad" steht dabei für den Pfad im System ein, in dem Boost installiert wird – beispielsweise /usr/local, /opt/local, /usr/local/boost-1.58 oder C:\local\boost\boost-1.58.

Diesen Pfad erhält anschließend der configure-Befehl von WOPR mittels --with-boost=Pfad. Beim späteren Ausführen der WOPR-Programme müssen die Nutzer gegebenenfalls das Verzeichnis Pfad/lib auf Unix/Linux in der Umgebungsvariablen LD_LIBRARY_PATH beziehungsweise LIBPATH (AIX) angeben. Auf Windows sollten die Boost-DLL-Verzeichnisse in der PATH-Variable eingetragen sein.