Insbesondere Linux-Einsteiger werden in diversen Foren u.a. mit Begriffen wie kompilieren konfrontiert. Allein schon das Terminal stellt für so manchen ein Potemkinsches Dorf dar und verunsichert nicht wenige…
Beim Kompilieren unter Linux wird der Quellcode eines Programms – also die von Menschen lesbaren Programmbefehle – in eine für den Computer ausführbare Datei umgewandelt. Dieser Prozess ist ein zentraler Schritt in der Software-Entwicklung: Erst so kann ein Programm tatsächlich auf dem Rechner laufen.
Wie funktioniert das Kompilieren?
Das Kompilieren erfolgt typischerweise in drei Schritten, wenn ein Programm aus den Quellen gebaut wird:
I. Konfigurieren (./configure)
Mit diesem Schritt wird das Programm für das Zielsystem angepasst. Abhängigkeiten werden geprüft, die Umgebung konfiguriert und die Einstellungen für den Compiler vorbereitet. Viele Projekte bieten ein configure-Skript, mit dem weitere Einstellungen vorgenommen werden können – etwa Installationspfad oder Zusatzfunktionen (–enable-xyz bzw. –disable-xyz).
II. Kompilieren (make)
Mit make wird der eigentliche Kompilierprozess gestartet. Hier wandelt der Compiler (meist gcc) den Quelltext in Maschinencode um und erzeugt die ausführbare Datei.
III. Installieren (make install)
Das kompilierte Programm wird auf dem System installiert – die erzeugten Dateien werden an die vorgesehenen Orte kopiert und evtl. noch weitere Konfigurationsschritte vorgenommen.
Die vorgenannten Schritte sind nur ein grober Überblick – also keine vollständige Darstellung.
Warum selber kompilieren?
Eine berechtigte Frage.
Es gibt verschiedene Gründe, Software – unter Linux – selbst zu kompilieren:
– Die benötigte Software ist nicht als fertiges Paket verfügbar
– Optimale Anpassung an die eigene Hardware
– Mehr Performance und Sicherheit – besonders beim Kernel
Nachteile
Komplexität des Prozesses:
Gerade neue Linux-Benutzer sind mit den vielen Schritten und Einstellungen beim Kompilieren schnell überfordert. Es reicht nicht, ein paar Befehle einzugeben – Vorkenntnisse sind nötig, um etwa Module und Treiber korrekt auszuwählen.
Manuelle Verwaltung von Abhängigkeiten:
Man muss selbst sicherstellen, dass alle benötigten Bibliotheken und Programme installiert sind.
Fehlt etwas, kommt es zu Fehlermeldungen, die oft schwierig zu interpretieren sind.
Fehleranfälligkeit:
Schon kleine Konfigurationsfehler führen dazu, dass Software nicht richtig funktioniert oder sich gar nicht kompilieren lässt. Die Fehlersuche kann mitunter mühsam und zeitintensiv sein.
Längerer Installations- und Update-Aufwand:
Für Updates muss die Software erneut selbst kompiliert werden, manchmal inklusive aller Abhängigkeiten. Ein automatisches Update wie bei Paketmanagern gibt es nicht.
Zeitaufwand:
Das Kompilieren – besonders von großen Programmen wie dem Linux-Kernel – dauert auf normalen Rechnern oft Stunden.
Währenddessen sind viele Schritte nötig, die die Geduld strapazieren können.
Risiko für das eigene System:
Durch Fehler bei der Installation oder Konfiguration besteht das Risiko, das eigene System unbrauchbar zu machen.
Anmerkung
Ein Backup der wichtigsten Daten sowie ein System-Backup wird dringend empfohlen.
Das Kompilieren sollte die Ausnahme bleiben.
Titelbild: Designed by Graphiqastock / Freepik
Eine Reaktion
Du bist mit der „Komplierung“ nahe daran als Programmierer bezeichnet zu werden.
Es hat aber auch viele Vorteile für Dich persönlich…
– Du wirst dich mit deinem System sehr genau auseinander setzen müssen. 32 oder 64 Bit sind dann kein böhmisches Dorf, auch Begriffe wie char, long, int sind dir dann geläufig. DLL, .lib, .h .c oder .so sind als Dateiendungen wohl bekannt.
– Aber du wirst auch Zusammenhänge erkennen, die nicht so sichtbar sind.
– Du wirst auch Lösungen vergleichen können und etwas gut / schlecht empfinden.
– Und du wirst über dich selbst schmuzeln, „so was habe ich einmal gefragt…..“
– Fehlermeldungen werden dann von Dir mit einem „eh klar… “ kommentiert.
– Als Belohnung laufen deine Systeme, dann Jahre ohne Änderung und ohne die Notwendigkeit eines Updates, wenn man weiß was man verwendet hat.
Auch wenn es auf den ersten Blick furchtbar aussieht, keine Sorge, jeder hat einmal angefangen. Aber erwarte nicht, dass alles gleich funktioniert.
Also Willkommen in einer neuen Welt und wer weiß vielleicht hast du Spaß dabei.