Kompilieren

Kompilieren

Kompilieren, Software aus Quelltext erstellen ganz einfach

Informationen

Normalerweise installiert man unter Linux weitere Software die man benötigt ganz einfach über die Paket-Verwaltung aus den Repoditorys, manchmal ist jedoch die gewünschte Software nicht vorhanden oder nicht in der benötigten Version. Dann sucht man im Internet oder via Snap oder auch Flatpak. Wird man auch hier nicht fündig greift man zur Königsdisziplin der Installation von Software unter Linux – dem Kompilieren.

Kompilieren nennt man das Übersetzen von Quellcode so wie ihn der Entwickler geschrieben hat in funktionierende Software. Immer wieder hört man dies wäre umständlich, hier und da fehlt etwas was wieder zu Fehlschlägen führt – ja, ich muss zugeben das es nicht das Einfachste ist wenn man nicht versteht wo man ansetzen muss. Aber mit etwas Hilfe kommt man recht schnell zum Ziel- In diesem Beitrag lernen wir ein wenig mehr darüber.

Voraussetzungen schaffen

In diesem Beitrag geht es hauptsächlich darum welche Software man unter auf Debian basierenden Systemen wie Ubuntu, Kubuntu und Linux Mint benötigt um zu kompilieren, dies ist unter den vielen Distributionen sehr verschieden. Folgende Pakete müssen unbedingt zum Kompilieren über die Paket-Verwaltung installiert sein: “build-essential make cmake“, zusätzlich ist es oft so das man weitere Entwickler-Pakete benötigt, dazu aber später mehr, eine sehr gute Hilfe ich auch das Paket “checkinstall” sowie “apt-file“.

Das Kompilieren / Der Vorgang

Grundsätzlich unterscheidet man unter Linux vor allem zwischen C-Software und Qt-Software (C++), je nachdem um was es tatsächlich geht unterscheidet sich auch das Kompilieren. Um was es wirklich geht sieht man spätestens wenn man beginnt.

Meist lädt man sich Quellcode in einem komprimierten Archiv herunter, man entpackt dieses und findet darin ein Verzeichnis das man ganz einfach im Dateimanager öffnet. Je nachdem ob es sich um eine größere Software handelt finden sich darin Unter-Verzeichnisse und eine Menge an Dateien.

Hier sollte man sich vor allem einige Hilfe-Dateien ansehen, dies sind reine Textdateien die man einfach per Klick öffnet – wichtig sind vor allem Dateien mit dem Namen “README” und oft auch “INSTALL“. Diese beinhalten vor allem zusätzliche benötigte Software die mit Namen benannt werden – jedoch meist nicht auf die Pakete der Distribution bezogen. Hier hilft dann vor allem Synaptic. Suchen Sie nach den Begriffen die als Abhängigkeiten benannt werden – Pakete die nach dem Namen ein “-dev” angehängt haben sind die die wir benötigen und werden installiert.

Ist dies geschehen werfen wir das Terminal an und wechseln in das entpackte Verzeichnis. Beginnen wir einmal mit C-Software, haben Sie in den Hilfe-Dateien nirgendwo den Begriff “cmake” gefunden handelt es sich um solche. Als erstes gilt es sich weitere Informationen zu holen, dies erledigt als normaler Nutzer der Befehl:

./configure --help

Dieser Befehl zeigt weitere oft nützliche Optionen an die man an den folgenden Befehl als Option anhängt, sind aber meist nicht nötig außer man möchte diese für spezielle Funktionen nutzen.

Hat man sich diese Informationen besorgt und möchte diese nutzen hängt man diese an folgenden Befehl an (ebenfalls als normaler Nutzer):

./configure

Dieser Befehl kontrolliert erst einmal ob auch alle benötigten Abhängigkeiten im System installiert / vorhanden sind und bereitet alle möglichen Dateien auf das eigentliche Kompilieren vor. Hier wäre es nun möglich das die Software mit einer Fehlermeldung beendet – dies deutet dann auf nicht vorhandene Abhängigkeiten hin, auch werden die benötigten fehlenden Dateien angezeigt.

Gibt es solche fehlenden Dateien gilt es heraus zu finden in welchem Paket sich diese Dateien befinden – hier hilft uns nun die zuvor schon kurz erwähnte Software “apt-file”. Wir werden auf dem Terminal zum Administrator und machen diese Software bereit:

apt-file update

Diese Software dient dazu anzuzeigen welche Dateien sich in allen Paketen der Repoditorys befinden anzuzeigen, dies bedeutet sie lädt sich einen Index herunter den man dann durchsuchen kann. Wollen wir ganz einfach einmal nach der Datei “Dateiname.so” suchen – Dateien mit dieser Endung sind meist die fehlenden:

apt-file search Dateiname.so

Angezeigt werden nun genau diese Pakete – also deren Namen in denen Dateien mit dieser Bezeichnung vorhanden sind, manchmal sind dies auch mehrere – wir installieren wie schon beschrieben meistens diese Pakete mit einem “-dev” am Ende, sind dies mehrere installiert man sich diese einfach alle.

Ist dies geschehen startet man die Kontrolle noch einmal mit:

./configure

Dies wiederholt man so lange bis der Befehl fehlerfrei abschließt. Ist dies geschehen beginnt man das eigentliche Übersetzen des Quellcodes, hier wird also aus reinen Textdateien funktionierende Programme / Dateien geschaffen, auch hier als normaler Nutzer:

make

Je nachdem ob es sich hier um eine größere oder kleinere Software handelt kann dies kurz bis etwas länger dauern. Auch hier wäre es möglich das das Kompilieren mit einem Fehler abschließt – das Problem hat dann der Entwickler der Software geschaffen – er hat vergessen prüfen zu lassen ob auch wirklich alle nötigen Dateien vorhanden sind, die fehlenden Dateien werden angezeigt und wir bemühen wieder die Software “apt-file”. Nach der weiteren Installation möglicher fehlender Dateien starten wir folgende Befehle:

make clean
make

Dies so lange bis der letzte Befehl ohne Fehlermeldung abschließt. Ist dies geschehen – bedeutet der Quellcode wurde fehlerfrei übersetzt geht es um die eigentliche Installation, also das Verschieben der nötigen übersetzten Dateien an die richtige Stelle im System. Dies erledigen wir nun als Administrator mit dem Befehl:

make install

Auf diese Art gehen wir so gesehen an der Paket-Verwaltung vorbei und diese weis nicht das die Software installiert ist, damit dies nicht geschieht bemühen wir das ebenfalls schon erwähnte Programm “checkinstall”. Diese baut aus unseren übersetzten Dateien ein Debian-Paket das wir anschließend ganz normal über die Paket-Verwaltung installieren können. Hier ersetzen wir den zuletzt genannten Befehl durch:

make checkinstall

Die Software fragt manche Details ab wie etwa die Version, den Maintainer – also Ihren Namen und so weiter – geben Sie einfach an wie Sie dies wünschen, Sie können wenn gewünscht aber auch einfach alle Nachfragen mit der Eingabe-Taste bestätigen bis die Software ihre Arbeit erledigt hat. Ein Verzeichnis höher liegt dann das fertig gestellte Debian-Paket.

Handelt es sich um Qt-Software, also C++ läuft der Vorgang etwas anders ab, meist vor allem etwas kürzer. Auch hier lesen Sie sich die genannten Hilfe-Dateien durch, meist findet sich hier ein angegebenes Unter-Verzeichnis in das Sie auf dem Terminal wechseln müssen. Haben Sie alle geforderten Abhängigkeiten installiert starten Sie im angegebenen Verzeichnis als normaler Nutzer den Befehl:

cmake ..

Wenn angegeben auch nur mit einem Punkt – also:

cmake .

Gibt es hier Fehlermeldungen installieren Sie die nötigen Abhängigkeiten und starten den Befehl erneut.