PPL7-Icon Patrick's Programming Library Version 7.0.0 - Dokumentation
Download und Installation

Download

Die aktuelle Version und Dokumentation der Library ist hier zu finden:

http://www.pfp.de/ppl

Die Sourcen sind dort im Format ".tar.bz2" zu finden. Unter Unix kann dieses Archiv mit tar oder gtar ausgepackt werden (tar -xjf ppl*.tar.bz2), unter Windows eignet sich zum Beispiel 7-Zip.

Git

Der Quellcode der Library wird bei GitHub gehostet und kann wie nachfolgend beschrieben aus dem Repository ausgecheckt werden.

git clone https://github.com/pfedick/pplib.git ppl7

Installation unter UNIX

Die Library wird mit einem configure-script ausgeliefert, in dem alle optionalen Features ausgewählt werden können. Um eine Basisversion zu erhalten reicht oftmals ein einfaches configure ohne Parameter aus:

./configure
make
make install

Für das "make install" sind ggfs. Root-Rechte erforderlich.

Das Configure untersucht das System und setzt entsprechende Defines für den Compiler. Optionale Features werden zum Teil automatisch eingebunden, wenn sie gefunden werden.

Wird eine Library nicht gefunden oder nicht automatisch eingebunden, kann über Parameter beim Aufruf des configure-Scripts nachgeholfen werden. Beispiel:

./configure --with-mysql=/usr/local/mysql

Soll eine bestimmte Library explizit nicht eingebunden werden, kann man dies mit "--without-xxx" festlegen, wobei xxx für den Namen der Library steht:

./configure --without-mysql

Alle weiteren Details sind im configure zu finden, wenn man es mit "./configure --help" aufruft.

Compiler auswählen

Sofern nichts angegeben wird, wird der Defaultcompiler verwendet, in der Regel gcc bzw. g++. Sind mehrere Compiler vorhanden, kann durch setzen der Umgebungsvariablen CC und CXX vor Aufruf von "configure" bestimmt werden, welcher Compiler verwendet werden soll.

Beispiel 1: gcc Version 5

Unter FreeBSD kann man verschiedene Versionen über die Ports-Collection installieren. Die installierten Binaries bekommen dann die Version im Dateinamen angehangen, z.B. "5". Das gcc-Binary heisst somit "gcc5", bzw. "g++5":

export CC=gcc5
export CXX=g++5
./configure ...

Beispiel 2: clang Version 6

export CC=clang60
export CXX=clang++60
./configure ...

Installation unter Debian / Ubuntu

Wenn man alle Features der Library nutzen will, muß man folgende Pakete installieren:

# Kern-Funktionalität
sudo apt-get install zlib1g-dev libbz2-dev libssl-dev libpcre3-dev nasm
# Kryptografie
sudo apt-get instal libssl-dev libmcrypt-dev libmhash-dev
# Internet
sudo apt-get install libcurl4-openssl-dev libldns-dev
# Datenbanken
sudo apt-get install libmysqlclient-dev libpq-dev freetds-dev
# Grafik
sudo apt-get install libpng12-dev libjpeg62-dev libsdl1.2-dev libfreetype6-dev libmad0-dev
# Sound
sudo apt-get install libmp3lame-dev libmad0-dev libmpg123-dev libogg-dev libshout3-dev

Ist alles installiert, kann man das configure mit folgenden Parametern aufrufen:

export CFLAGS="-no-pie "
echo "configuring for generic Linux"
./configure --prefix=$PREFIX \
--with-lame --with-pcre --with-x --with-openssl \
--with-mysql --with-libiconv-prefix --with-nasm \
--with-libmhash --with-ogg \
--with-postgresql \
--with-libmicrohttpd \
--with-jpeg --with-libpng --with-libtiff \
--with-libtiff --with-mpg123 \
--with-libidn \
--enable-gtest=/usr/local/googletest-release-1.7.0

Installation unter FreeBSD

export PREFIX=/usr/local
export CFLAGS="-I/usr/local/include"
export LDFLAGS="-L/usr/local/lib"
export CPPFLAGS=-I/usr/local/include
export CC=clang$CLANG_VERSION
export CXX=clang++$CLANG_VERSION
./configure --prefix=$PREFIX \
--with-lame=/usr/local --with-mpg123=/usr/local \
--with-pcre=/usr/local --with-x --with-openssl=/usr --with-mysql \
--with-libmhash=/usr/local \
--with-libiconv-prefix=/usr/local --with-nasm \
--with-jpeg --with-libpng --with-libtiff=/usr/local \
--with-postgresql \
--with-libidn=/usr/local \
--with-ogg=/usr/local \
--with-libmicrohttpd=/usr/local \
--enable-gtest=/usr/local/gtest-1.7.0

Installation unter Windows

Installation mit MinGW32/64

Für fast alle unterstützten Module gibt es fertige Pakete, die mit "pacman" installiert werden können. Einzig für mcrypt und mhash gibt es keine Pakete.

Pakete installieren

Um alle Features nutzen zu können, müssen folgende Pakete installiert werden:

pacman -S mingw-w64-x86_64-SDL2 mingw-w64-x86_64-bzip2 mingw-w64-x86_64-curl mingw-w64-x86_64-freetype \
mingw-w64-x86_64-gtest mingw-w64-x86_64-iconv mingw-w64-x86_64-lame mingw-w64-x86_64-ldns \
mingw-w64-x86_64-libiconv mingw-w64-x86_64-libidn mingw-w64-x86_64-libjpeg-turbo \
mingw-w64-x86_64-libmad mingw-w64-x86_64-libpng mingw-w64-x86_64-libogg mingw-w64-x86_64-libtiff \
mingw-w64-x86_64-mpg123 mingw-w64-x86_64-nasm mingw-w64-x86_64-openssl mingw-w64-x86_64-pcre \
mingw-w64-x86_64-sqlite3 mingw-w64-x86_64-zlib

MHash installieren

Im folgenden wird angenommen, dass wir die 64-Bit-Version von MHash erstellen und unter /usr/local installieren wollen:

export VERSION=0.9.9.9
export PREFIX=/usr/local
export MINGW=/mingw64
export PATH=$MINGW/bin:$PATH
rm -rf mhash-$VERSION.tar.gz
wget -O mhash-$VERSION.tar.gz "http://sourceforge.net/projects/mhash/files/mhash/$VERSION/mhash-$VERSION.tar.gz/download"
rm -rf mhash-$VERSION
tar -xzf mhash-$VERSION.tar.gz
cd mhash-$VERSION
if [ ! -f lib/mhash.c_original ] ; then
cp lib/mhash.c lib/mhash.c_original
fi
cat lib/mhash.c_original | sed -e "s/int main/int __mhash_main/" > lib/mhash.c
rm -rf config.sub
automake -a
./configure --prefix=$PREFIX --enable-static --disable-shared --build=x86_64-w64-mingw32
mkdir -p $PREFIX/lib $PREFIX/include $PREFIX/include/mutils
make -j2
make install

MCrypt installieren

Im folgenden wird angenommen, dass wir die 64-Bit-Version von MCrypt erstellen und unter /usr/local installieren wollen:

export VERSION=2.5.8
export PREFIX=/usr/local
export MINGW=/mingw64
export PATH=$MINGW/bin:$PATH
rm -rf libmcrypt-$VERSION.tar.gz
wget -O libmcrypt-$VERSION.tar.gz "http://sourceforge.net/projects/mcrypt/files/Libmcrypt/$VERSION/libmcrypt-$VERSION.tar.gz/download"
rm -rf libmcrypt-$VERSION
tar -xzf libmcrypt-$VERSION.tar.gz
cd libmcrypt-$VERSION
grep -v "\-no\-undefined" configure > configure2
rm config.sub
automake -a
./configure2 --prefix=$PREFIX --enable-static --disable-shared
make
make install

inst3mingw_ppl7

export MINGW=/mingw64
export PATH=$MINGW/bin:$PATH
export CPPFLAGS="-I/usr/local/include"
export LDLAGS="-L/usr/local/lib"
export CFLAGS="-I/usr/local/include"
./configure --prefix=/usr/local \
--with-pcre=$MINGW --with-bzip2=$MINGW --with-zlib=$MINGW \
--with-nasm=$MINGW/bin --with-libiconv-prefix=$MINGW \
--with-lame=$MINGW --with-mpg123=$MINGW --disable-freetypetest --with-ft-prefix=$MINGW \
--with-libtiff=$MINGW --with-jpeg=$MINGW \
--with-libjpegturbo=$MINGW --with-libpng=$MINGW --with-libmhash=/usr/local \
--with-libmcrypt-prefix=/usr/local \
--with-openssl=$MINGW --with-libcurl=$MINGW \
--with-libldns=$MINGW --with-libidn=$MINGW \
--with-sdl-prefix=$MINGW \
--without-postgresql --without-mysql \
--enable-gtest=/usr/local/gtest-1.7.0 \

Installation mit Visual Studio

Visual Studio wird zur Zeit nicht unterstützt.