Auf zu den Quellen
Programme selber kompilieren
Lies mich!
Nach dem Öffnen des Archivs wechseln Sie in das neu entstandene Verzeichnis. Hier sehen Sie unter anderem eine Reihe von Dateien, die Namen wie configure und Makefile.in tragen oder auf .c enden. Letzteres sind Dateien mit dem Programmcode, aus dem Sie die Software später übersetzen.
Der erste Schritt zum fertigen Programm, der gerne vergessen wird, umfasst das Lesen der Textdateien README, NEWS, INSTALL und ChangeLog, soweit diese vorhanden sind. Dort finden Sie Hinweise, welche Programme oder Bibliotheken die Anwendung zu ihrer Installation benötigt. ChangeLog und NEWS informieren Sie über Veränderngen zu Vorgängerversionen. Außerdem gibt Ihnen die Datei INSTALL Tipps, wie die Installation ablaufen soll.
Falls Sie bei der Lektüre dieser Dateien auf unerfüllte Abhängigkeiten stoßen, gilt es, die entsprechenden Pakete von Ihren Distributions-CDs oder aus dem Internet nachzuinstallieren (Kasten 1). Oft finden Sie in den Dateien README oder INSTALL bereits eine URL, wo Sie das Nötige herunterladen können.
Allerdings empfiehlt sich, zunächst die distributionseigenen Resourcen zu verwenden, anstatt die Anhängigkeiten mit Hilfe des Internets aufzulösen. Nur wenn Sie eine Library nicht auf Ihren CDs entdeckten oder genau wissen, was Sie tun, sollten Sie auf distributionsfremdes Material zurückgreifen.
Ansonsten riskieren Sie Fehlfunktionen in den Programmen Ihrer Distribution, wenn diese nicht mit der von Ihnen eingespielten Bibliothek zusammenarbeiten.
Kasten 1: Datei INSTALL
Der Inhalt der Datei INSTALL variiert von Programm zu Programm. Hier sehen Sie beispielhaft die Angaben aus dem Sourcecode zum Webbrowser links.
Check you have installed the following libraries and are able to compile with them. On a package-driven distribution, you will need both "library" and "library-dev(el)": libpng – required to compile links in graphics mode (not required in text mode). IJG libjpeg – if you want to display JPEG's (probably yes). TIFF Library – if you want TIFFs. SVGAlib – if you want Links to be able to display on SVGAlib. OpenSSL – if you want SSL connections.
Make intern
Bevor Sie sich mit ./configure dem ersten Takt des Dreischritts zuwenden, sehen wir uns ein Makefile im Detail an (Listing 1). Hier entdecken Sie eine Reihe von Variablen, die den Compiler (CC) und dessen Optionen (CFLAGS) festlegen sowie das Zielverzeichnis definieren (DEST), wohin das kompilierte Programm schließlich kopiert wird. Die Manual-Seite landet über die Variablen MAN und MAN1 im Verzeichnis /usr/local/man/man1.
Listing 1
Variablen eines Makefiles
CC = gcc CFLAGS = -O2 -Wall DEST = /usr/local/bin MAN = /usr/local/man MAN1 = $(MAN)/man1
Die Werte der Variablen DEST müssen Sie ändern, wenn Sie zum Beispiel /opt/programmname an Stelle von /usr/local/bin als Zielverzeichnis verwenden wollen. Da der Verzeichnispfad unter /usr/local/ dem User root gehört, müssen Sie vor dem Ausführen des Befehls make install mit dem Kommando su in seine Rolle schlüpfen. Ansonsten lassen sich die Pogrammteile nicht an diese Stelle kopieren.
Doch das Makefile besteht nicht nur aus Variablen: Dort stehen auch sogenannte Targets ("Ziele"). Dies sind Zeilen, die die Optionen beim Aufruf von make festlegen, beispielsweise make uninstall oder make install. Targets stehen am Anfang einer Zeile und schließen mit einem Doppelpunkt (Listing 2). Hinter dem Doppelpunkt folgen, falls vorhanden, die Voraussetzungen, die optional sind.
Listing 2
Targets eines Makefiles
uninstall:
rm -f $(DEST)/programm
install: programm
cp programm $(DEST)/programm
Wie Sie im Beispiel sehen, löscht der Aufruf make uninstall die Datei /usr/local/bin/programm. Die Variable DEST innerhalb dieser Regel wurde bereits in Listing 1 gesetzt. Das Kommando make install hingegen kopiert die kompilierte Datei programm in das genannte Verzeichnis. Für gewöhnlich brauchen Sie Targets nicht zu verändern. Eventuell müssen Sie Variablen wie in Listing 1 anpassen, bevor Sie die Kommandos make und make install starten.
Bei einem kleinen Makefile fällt das Editieren vor dem Kompilieren nicht ins Gewicht. Allerdings hat die Sache einen Haken: Die meisten Makefiles fallen weder klein noch übersichtlich aus. Deshalb liegt dem Quellcode in der Regel ein Shell-Skript mit dem Namen configure bei, dem wir uns nun zuwenden.



