Home / LinuxUser / 2009 / 05 / Klebebindung

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

War doch klar...
(229 Punkte bei 11 Stimmen)
Meinst Du: Patch CD Updates?
(179 Punkte bei 5 Stimmen)
One goes, one comes
(161 Punkte bei 4 Stimmen)
Speichern in der Cloud
(161 Punkte bei 4 Stimmen)
Re: Skype für 64-Bit-Prozessor u. Suse 12.1
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 10000 Shops,
3.5 Mio Artikel. Alle Bestseller, Servertechnik und Technik Themenwelten.

Notebooks und Netzwerkhardware bei Mercateo günstig kaufen.
Internet Telefonie mit VoIP Telefonen von Gigaset
Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.
Günstige Digitalkameras finden Sie im Preisvergleich.
AA_kleber_sxc766748.jpg

© sxc.hu, Bananaism

Klebebindung

Anwendungen statisch linken mit Statifier und Ermine

23.04.2009 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.

Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

889 Hits
Wertung: 46 Punkte (3 Stimmen)

Schlecht Gut

Infos zum Autor

Tim Schürmann

Tim Schürmann

Tim Schürmann ist Diplom-Informatiker und derzeit als freier Autor unterwegs. Mehr Informationen finden Sie auf seiner Homepage unter www.tim-schuermann.de.


Infos zur Publikation

Infos zur Publikation

title_2012_02

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,50 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 56,10) können Sie im LNM-Shop bestellen.

Tipp der Woche

Duden Korrektor unter 64-Bit
Duden Korrektor unter 64-Bit
Tim Schürmann, 06.02.2012 10:36, 0 Kommentare

Der Duden Korrektor bietet eine äußerst nützliche Rechtschreib- und Grammatikkorrektur für LibreOffice und bringt in der aktuellen Version 8 e...

Aktuelle Fragen

rndc reload zone - failed bad zone
Ludwig jun. B., 06.02.2012 16:08, 2 Antworten
Schönen guten Tag, ich habe folgendes Problem. Immer wenn ich folgendes Kommando ausführen bek...
Skype für 64-Bit-Prozessor u. Suse 12.1
Klaus Sigerist, 05.02.2012 11:39, 3 Antworten
Hallo Gemeinde! Ich bin nur ein einfacher Nutzer und habe Probleme mit der Installation von Skyp...
8! Anfängerfrage :) Wie finde ich in Ubuntu die Datenträger (Bild, Text)
samuel leusam, 04.02.2012 15:53, 2 Antworten
Ich habe neu Ubuntu. Wenn ich die SD Karte im Laptop einstecke, erkennt er sie und gibt ihr den N...
OpenSuse 12.1-Service Kit 01/12
Christoph-J. Walter, 28.01.2012 08:52, 2 Antworten
Hallo Gemeinde, ich habe 12.1 neu installiert. Alles in Ordnung! Nun möchte ich das Service Kit (...
Ubuntu 11.10 konfigurieren
Michael Hinz, 27.01.2012 17:52, 1 Antworten
Ubuntu läuft bei mir. Allerdings nur, wenn die Daten-CD eingelegt ist. Unabhängig von Bios-Einste...