====== Programme selbst kompilieren (Linux) ====== Normalerweise werden die Pakete einer Linux-Distribution von dem Maintainer des Paketes gebaut und von der Distribution zur Verfügung gestellt. Die Programme können jedoch auch direkt aus den Quelltexten kompiliert werden. Ich werde dies am Beispiel des Pakets ''[[http://www.gnu.org/software/coreutils/coreutils.html|coreutils]]'' einmal zeigen. Darin sind viele wichtige Befehle wie ''ls'' oder ''date'' enthalten. Generell läuft der Prozess immer nach dem folgenden Schema ab: - Quelltext herunterladen und entpacken - ''configure'' für die Konfiguration ausführen - ''make'' kompiliert den Quelltext in ausführbare Programme - ''sudo make install'' kopiert die fertigen Programme an die richtige Stelle. ===== Herunterladen und Entpacken ===== Zunächst werden die Quellen heruntergeladen und entpackt. wget http://ftp.gnu.org/gnu/coreutils/coreutils-8.24.tar.xz tar xf coreutils-8.24.tar.xz ===== Konfiguration ===== In der Datei ''INSTALL'' oder ''README'' wird beschrieben, wie das Paket gebaut werden muss. Dies ist nicht ganz einheitlich und funktioniert immer etwas anders. Es hat sich jedoch bewährt, die Programme ''configure'' (Konfiguration) und ''make'' (Kompilieren und Installieren) für diesen Prozess zu nutzen. Der Befehl ''configure'' untersucht das aktuelle System und erstellt ein Skript, mit dessen Hilfe ''make'' anschließend den Quelltext in ein lauffähiges Programm übersetzten kann. Mit der Option ''--prefix'' kann das Ziel der erstellen Binärdateien angegeben werden. cd coreutils-8.24/ less INSTALL ./configure --prefix=/home/bakera/tmp/coreutils/build ===== Kompilieren ===== Nun ist der Weg frei für die Erstellung der Programme. Die Quelltexte werden nun in ausführbare Programme übersetzt. make ===== Installation ===== Der folgende Befehl kopiert schließlich die Binärdateien an die richtige Stelle. make install Nun können wir in das Zielverzeichnis wechseln und die Programme testen. cd ../build/ ./bin/ls ./bin/date ===== Weitere Informationen ===== Weitere ausführliche Informationen bieten die [[https://help.ubuntu.com/community/CompilingEasyHowTo|Dokumentation von Ubuntu]] und ein [[https://wiki.ubuntuusers.de/Programme_kompilieren/|Artikel des ubuntuusers-Wiki]]. Das folgende Video zeigt den Prozess noch einmal. ===== Übungen ===== Und jetzt bist du an der Reihe. - An welcher Stelle befinden sich die Befehle ''ls'' und ''date'' im Dateisystem?((Tipp: ''man which'')) - Welche Versionen sind jeweils installiert? - Vollziehe die obigen Schritte selbst nach und kompiliere das Paket ''coreutils'' in der aktuellen Version. \\ Eventuell werden Fehlermeldungen angezeigt, weil einige Programme fehlen. Prüfe, ob das Paket ''build-essential'' bereits installiert ist. - Nun weißt du, wie man ein Programm aus dem Quelltext übersetzen und installieren kann. Suche jetzt nach einem anderen Paket und übersetze es direkt aus den Quellen. Die [[http://www.gnu.org/software/|Pakete von gnu.org]] sind ein erster guter Anlaufpunkt. - Dokumentiere dein Vorgehen. - Für Profis: [[http://www.linuxfromscratch.org/|Linux From Scratch]] ist eine sehr ausführliche Anleitung, die erklärt, wie man ein ganzes Linux-System vollständig aus den Quelltexten erstellt. Es existiert auch eine [[http://oss.erdfunkstelle.de/lfs-de/6.4/online/index.html|deutsche Version]] aus dem Jahr 2008. Der Prozess dauert eine ganze Weile, man lernt dabei allerdings auch enorm viel. ===== Links ===== * Der Artikel [[Compiler]] beschreibt, wie man Programme unter C# übersetzt. * Der [[http://xkcd.com/1654/|xkcd-Comic Universal Install Script]] macht sich über verschiedene Installationsmechanismen lustig.