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