AA_kleber_sxc766748.jpg

© sxc.hu, Bananaism

Anwendungen statisch linken mit Statifier und Ermine

Klebebindung

In der Fremde versagt der extra auf einen USB-Stick kopierte Terminplaner plötzlich den Dienst, weil ihm irgendeine Bibliothek nicht schmeckt. Die von Statifier und Ermine frisierten Programme laufen dagegen auf jeder beliebigen Distribution.

Gerade in größeren Anwendungen, wie etwa einer Textverarbeitung, nutzen die Anwender bei der täglichen Arbeit nur einen Bruchteil der angebotenen Funktionen. Damit die nicht genutzten Programmbestandteile nicht unnötig den Hauptspeicher verstopfen – OpenOffice bringt es immerhin auf über 200 MByte – lagern die Entwickler sie in spezielle Dateien aus. Unter Linux tragen diese so genannten dynamischen Bibliotheken die Dateiendung .so. Löst nun ein Benutzer eine Aktion aus, sucht das Programm nach der passenden Bibliothek, lädt sie in den Hauptspeicher und führt die entsprechende Funktion aus. Auf diese Weise bleiben Anwendungen nicht nur schlank, bei Updates aktualisieren Sie auch lediglich die betroffene Bibliothek.

Der modulare Aufbau bietet noch einen weiteren Vorteil: Programme dürfen sich Bibliotheken teilen (daher auch der englische Begriff "shared libraries"). Will eine Anwendung ihren Benutzern eine grafische Oberfläche bieten, so kann sie die Menüs, Schaltflächen und Listen selbst zeichnen – oder aber dazu die auf allen Distributionen sowieso vorhandenen GTK+- oder Qt-Bibliotheken nutzen. Dieser zweite Weg ist äußerst beliebt, weil er den Entwicklungsaufwand drastisch reduziert und nebenbei noch Speicherplatz spart.

Spürbares Verlangen

Den Haken an der Geschichte bekommen Anwender zu spüren, die zum Beispiel eine neue Programmversion installieren möchten. Dann müssen Sie erst einmal die Abhängigkeiten zu den verschiedenen Bibliotheken mühsam aufdröseln. Besonders hart trifft es meistens Multimedia-Begeisterte: Die entsprechende Software fordert in der Regel zahlreiche, mitunter recht exotische Bibliotheken an – wer etwa schon einmal das Schnittprogramm Kdenlive installieren wollte, kennt das Problem. Wie Listing 1 beweist, verlangen sogar simple Systemwerkzeuge wie ls gleich mehrere Bibliotheken. Glücklicherweise löst der Paketmanager meist sämtliche Abhängigkeiten schnell und unkompliziert auf.

Listing 1
# Von ls benötigte Bibliotheken
$ ldd /bin/ls
linux-gate.so.1 =>  (0xb8007000)
librt.so.1 => /lib/tls/i686/cmov/librt.so.1 (0xb7fd1000)
libselinux.so.1 => /lib/libselinux.so.1 (0xb7fb7000)
libacl.so.1 => /lib/libacl.so.1 (0xb7fae000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7e50000)
libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb7e37000)
/lib/ld-linux.so.2 (0xb7fed000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7e33000)
libattr.so.1 => /lib/libattr.so.1 (0xb7e2e000)

Haarig wird die Angelegenheit, wenn Sie "mal eben schnell" eine Anwendung auf einen anderen Rechner mitnehmen möchten oder eine sehr neue Software auf einem alten System ausführen wollen. An dieser Stelle rächt sich die Distributionsvielfalt: Damit das Programm auf dem Zielrechner überhaupt startet, müssen dort die erforderlichen Bibliotheken in exakt der von der Anwendung geforderten Version vorliegen. Selbst bei identischen Distributionen genügt häufig schon ein kleines Sicherheitsupdate, um eine zuvor herüber kopierte Anwendung schachmatt zu setzen.

Kluge Kleber

Hier kommen die beiden Werkzeuge Statifier und Ermine ins Spiel. Sie sammeln alle von einer Anwendung geforderten Bibliotheken ein und kleben sie an das ausführbare Programm. Das Ergebnis ist ein statisch gelinktes Programm (siehe Kasten "Statisch oder dynamisch?"), das prinzipiell auf allen Distributionen läuft. Einen Strich durch die Rechnung macht höchstens die Prozessorarchitektur: So läuft eine 64-Bit-Anwendung auch nach der Sonderbehandlung nicht auf einem 32-Bit-System. Umgekehrt funktioniert allerdings ein statisch gelinktes 32-Bit-Programm auf einem 64-Bit-Linux, ohne dass Sie mühevoll eine entsprechende Umgebung einrichten müssen.

Statifier [1] unterliegt der GPL; für Fedora, Mandriva und Slackware existieren fertige Pakete. Auf allen anderen Distributionen müssen Sie zum Quellcode-Archiv greifen. Achten Sie dabei darauf, dass Sie das Paket statifier in der aktuellsten Version erwischen (nicht rrp_statify). Haben Sie es auf die Festplatte entpackt, übersetzen und installieren Sie es mit administrativen Rechten mittels des Zweizeilers:

# make
# make install

Die proprietär lizenzierte und kostenpflichtige Statifier-Alternative Ermine [2] gibt es ausschließlich in zwei kostenpflichtigen Geschmacksrichtungen: Ermine Light liefert lediglich die Basisfunktionen, ist dafür aber auch etwas günstiger als Ermine Pro, das neben den Bibliotheken auf Wunsch noch weitere Dateien mit einpackt (dazu später noch mehr). Auf der Homepage stehen beide Varianten als fertige Testversionen bereit. Sie müssen lediglich die zu Ihrem System passende Datei herunterladen und Sie dort ausführbar machen. Die mit den Testversionen behandelten Programme laufen übrigens nur 30 Tage lang, wie Listing 2 zeigt.

Listing 2
# die Trial-Version von Ermine meldet sich
$ ./ErmineLightTrial.i386 /bin/ls --output=staticls
$ ldd staticls
        not a dynamic executable
$ ./staticls
staticls: was packed with Ermine Trial and should be used for evaluation only.
staticls: license will expire in 31 day(s)
ErmineLightTrial.i386  staticls

Statisch oder dynamisch?

Bibliotheken gibt es in statischen und dynamischen Varianten. Mit den erstgenannten kommen Sie als normaler Anwender nicht oder nur sehr selten in Kontakt; diese besitzen die Endung .a und verschmelzen bereits bei der Übersetzung des Programms mit diesem. Dieser Prozess heißt auch statische Bindung, englisch "static linking", das Ergebnis ist ein statisch gelinktes Programm. Sofern Sie Zugriff auf den Quellcode einer Anwendung besitzen, könnten Sie folglich auch ohne die Hilfe von Statifier oder Ermine ein unabhängiges Programm backen.

Dynamische Bibliotheken tragen die Endung .so und landen erst dann im Hauptspeicher, wenn das bereits fertige Programm nach seinem Start die darin enthaltenen Funktionen anfordert beziehungsweise aufruft. Ergo müssen Sie mit der Anwendung auch immer die dynamischen Bibliotheken ausliefern – oder sicherstellen, dass die entsprechende Distribution diese mitbringt.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Was sind Bibliotheken?
    Abseits der Computer-Welt kennt die Institution namens Bibliothek jeder – wenn auch viele sie selten betreten. Der Alltag eines jeden PC-Benutzers wäre ohne Bibliotheken jedoch nicht so leicht zu bewältigen.
  • checkinstall
    Wer unter Linux viel aktuelle Software ausprobiert, kennt das Problem: Neueste Programmversionen existieren oft nur als tar-Archiv und lassen sich lediglich unter Klimmzügen wieder deinstallieren. Checkinstall schafft Abhilfe.
  • The Answer Girl
    Die bei der Installation auf die Festplatte gespielte Software mag für den Anfang reichen, doch früher oder später kommt der Tag, an dem man das eine oder andere neue Programm ausprobieren möchte. Auch ein lapidar hingeworfenes "Installier Dir doch mal xy" als Antwort auf ein Problem wirft zunächst noch mehr Fragen auf – denn eine Datei namens setup.exe ist unter Linux schlichtweg unbekannt. Das Answer Girl hilft aus dieser Sackgasse.
  • Neue Software
  • Downloads beschleunigen mit Trickle
    Verstopfen zu viele Downloads die eigene Internet-Leitung, sollte man den eigenen Netzwerkverkehr besser regeln. Der Linux-Kernel bietet dafür einige Wege, doch die sind verschlungen. Einfacher geht's mit Trickle.
Kommentare

Infos zur Publikation

LU 11/2017: Server für Daheim

Digitale Ausgabe: Preis € 8,50
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

Lieber Linux oder Windows- Betriebssystem?
Sina Kaul, 13.10.2017 16:17, 3 Antworten
Hallo, bis jetzt hatte ich immer nur mit
IT-Kurse
Alice Trader, 26.09.2017 11:35, 2 Antworten
Hallo liebe Community, ich brauche Hilfe und bin sehr verzweifelt. Ih bin noch sehr neu in eure...
Backup mit KUP unter Suse 42.3
Horst Schwarz, 24.09.2017 13:16, 3 Antworten
Ich möchte auch wieder unter Suse 42.3 mit Kup meine Backup durchführen. Eine Installationsmöglic...
kein foto, etc. upload möglich, wo liegt mein fehler?
kerstin brums, 17.09.2017 22:08, 5 Antworten
moin, zum erstellen einer einfachen wordpress website kann ich keine fotos uploaden. vom rechne...
Arch Linux Netzwerkkonfigurationen
Franziska Schley, 15.09.2017 18:04, 0 Antworten
Moin liebe Linux community, ich habe momentan Probleme mit der Einstellung des Lan/Wlan in Arc...