Home / LinuxUser / 2005 / 07 / Programme selber kompilieren

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Debian leicht gemacht
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.

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.

Tip a friend    Druckansicht Bookmark and Share
Kommentare

Hits
Wertung: 183 Punkte (13 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 05/2014

Aktuelle Ausgabe kaufen:

Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,95 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 60,60) können Sie im Medialinx-Shop bestellen.

Tipp der Woche

Bilder vergleichen mit diffimg
Bilder vergleichen mit diffimg
Tim Schürmann, 01.04.2014 12:40, 1 Kommentare

Das kleine Werkzeug diffimg kann zwei (scheinbar) identische Bilder miteinander vergleichen und die Unterschiede optisch hervorheben. Damit lassen sich nicht nur Rätsel a la „Orignial und Fäls...

Aktuelle Fragen

Owncloud mit Linuxmint 15 32 Bit
Santana Muggel, 24.04.2014 16:45, 0 Antworten
Hallo, ich habe nach dem Artikel in Heft 05.2014 versucht, owncloud einzurichten. Bei der Inst...
programm suche
Hans-Joachim Köpke, 13.04.2014 10:43, 8 Antworten
suche noch programme die zu windows gibt, die auch unter linux laufen bzw sich ähneln sozusagen a...
Funknetz (Web-Stick)
Hans-Joachim Köpke, 04.04.2014 07:31, 2 Antworten
Bei Windows7 brauche ich den Stick nur ins USB-Fach schieben dann erkennt Windows7 Automatisch, a...
Ubuntu 13.10 überschreibt immer Windows 8 Bootmanager
Thomas Weiss, 15.03.2014 19:20, 8 Antworten
Hallo Leute, ich hoffe das ich richtig bin. Ich habe einen Dell Insipron 660 Ich möchte gerne Ub...
USB-PTP-Class Kamera wird nicht erkannt (Windows-only)
Wimpy *, 14.03.2014 13:04, 15 Antworten
ich habe meiner Frau eine Digitalkamera, AGFA Optima 103, gekauft und wir sind sehr zufrieden dam...