Kompilierung verschiedener Pakete für ARM

In dieser Rubrik wollen wir verschiedene Pakete vorstellen und zeigen wie man sie mit einem Cross-Compiler für ARM-Architekturen kompiliert.

Bekannte Webserver

Webserver

Marktanteil

Apache

46.64%

Microsoft

29.33%

nginx

12.40%

http://news.netcraft.com/archives/2015/06/25/june-2015-web-server-survey.html

Nach den drei Giganten, die sich zusammen mehr als 88% Marktanteil unter allen erreichbaren Webservern teilen, folgt der häufig verwendete lighttpd (ausgesprochen „lighty“), mit einem Anteil von ungefähr 0,46%.

„Lighty“ - lighttpd

Der leichtgewichtige Webserver ist quelloffen unter BSD lizensiert. Er zeichnet sich trotz des großen Funktionsumfangs voralem durch den geringen Speicherverbrauch aus und eignet sich deshalb auch für kleine Systeme.

PCRE - Perl Compatible Regular Expressions

Vorraussetzung für lighttpd ist die Bibliothek pcre

Paket herunterladen und enpacken

get the sources from ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/

$ wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.37.tar.gz
$ tar -xvf pcre-8.37.tar.gz

Paket kompilieren

now switch to folder and start configure:

$ cd pcre-8.37
$ CXX=arm-linux-gnueabi-g++ CC=arm-linux-gnueabi-gcc RANLIB=arm-linux-gnueabi-ranlib STRIP=arm-linux-gnueabi-strip LD=arm-linux-gnueabi-ld AR=arm-linux-gnueabi-ar ./configure --enable-pcre32 --enable-cpp --host=arm-v5te-linux-gnueabi --prefix=/home/willy/linux/build/arm-v5te

Paket kompilieren und installieren

$ make
$ make install

Lighttpd

This Document discribes howto cross-compile lighttpd for ARM-Architectures. Before Beginnung, make sure you have a suitable cross-compiler installed.

Paket herunterladen und enpacken

get the sources from http://www.lighttpd.net/download/

$ wget http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.35.tar.gz
$ % tar -xvf lighttpd-1.4.35.tar.gz

Paket kompilieren konfigurieren und installieren

$ cd lighttpd-1.4.35
$ CC=arm-linux-gnueabi-gcc RANLIB=arm-linux-gnueabi-ranlib STRIP=arm-linux-gnueabi-strip CFLAGS="$CFLAGS -I/home/willy/linux/build/arm-v5te/include -DHAVE_PCRE_H=1 -DHAVE_LIBPCRE=1" LDFLAGS="-Wl,-rpath=/usr/arm-linux-gnueabi/lib" PCRECONFIG=/home/willy/linux/build/arm-v5te/bin/pcre-config
$ ./configure --host=arm-v5te-linux-gnueabi --without-zlib --without-bzip2 --with-pcre --with-openssl=/home/willy/linux/build/arm-v5te

Paket kompilieren

$ make

Die Binärdatei wird in src/ Verzeichnis abgelegt

$ file lighttpd
% lighttpd: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.3, for GNU/Linux 2.6.32, not stripped

GDB - GNU Debugger

Der GDB - GNU Debugger - ist der De-facto-Standard-Debugger von Linux-Systemen und wurde vom GNU-Projekt entwickelt. GDB ist auf eine breite Palette von Systemen portiert worden und unterstützt die Programmiersprachen C, C++, Objective-C, FORTRAN, Java, Pascal, Modula-2, Ada, D und Go.

Herunterladen der Quellen

Die Quellen könnnen hier heruntergeladen werden: http://ftp.gnu.org/gnu/gdb/

% wget http://ftp.gnu.org/gnu/gdb/gdb-7.9.1.tar.xz

Umgebungsvariablen

In diesem Fall kompilieren wir GDB so das er auf dem Host System läuft aber Code für die Target-Architektur debuggen kann. Aus diesem Grund können wir fürs kompilierne den Host-GCC verwenden.

Kompilierung

enpacken:

% tar -xvf gdb-7.9.1.tar.xz

wir wechseln ins Verzeichnis und starten configure:

% cd gdb-7.9.1
% LDFLAGS=-L/home/willy/linux/tarballs/termcap-1.3.1 ./configure --target=arm-linux-gnueabi --prefix=/usr

make

% make

install

% make install

OpenSSL

OpenSSL ist eine freie Implementierung für TLS (Transport Layer Security), ursprünglich SSL (Secure Sockets Layer).

OpenSSL wird unter anderem für die Übersetzung von OpenSSH benötigt.

zunächst laden wir die Quelldateien herunter:

wget https://openssl.org/source/openssl-1.0.2-latest.tar.gz

und entpacken diese anschließend:

tar -xvf openssl-1.0.2-latest.tar.gz

Nun erzeugen wir eine Makefile mit Autotools:

cd openssl-1.0.2-latest
./Configure linux-generic32 shared -DL_ENDIAN --openssldir=/home/willy/linux/build/arm-v7l

anschließend können wir das Paket kompilieren und installieren:

# dont use -jX here!!!
make CC=arm-linux-gnueabi-gcc RANLIB=arm-linux-gnueabi-ranlib LD=arm-linux-gnueabi-ld
make CC=arm-linux-gnueabi-gcc RANLIB=arm-linux-gnueabi-ranlib LD=arm-linux-gnueabi-ld install

SQLite3

SQLite3 ist eine kleine, leichtgewichtige Implementierung einer SQL-Datenbank. Die Datenbank läuft dabei nicht wie bei anderen großen Vertretern als Server-Dienst sondern es wird bei Zugriffen auf eine Datei geschrieben, was die Datenbank für große Datenmengen praktisch unbrauchbar macht. Allerdings ist sie für kleine Projekte sehr hilfreich und dazu noch in fast jeder gängingen Programmiersprache verfügbar.

Laden Sie zunächst die Quelldateien herunter:

wget http://sqlite.org/2015/sqlite-autoconf-3081002.tar.gz

und entpacken diese anschließend:

tar -xvf sqlite-autoconf-2081002.tar.gz

Nun beginnen wir mit der Konfiguration (Autotools):

cd sqlite-autoconf-2081002
./configure --prefix=/home/willy/linux/build/arm-v7l --host=x86_64
--target=arm-v7l-linux-gnueabi --disable-readline

anschließend können wir das Paket kompilieren und installieren:

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- install