Home / LinuxUser / 2005 / 07 / Programme selber kompilieren

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Eingedost
(161 Punkte bei 4 Stimmen)
Aufteiler
(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

Konfiguration zur Laufzeit

Mit dem Skript configure erübrigt sich die Handarbeit am Makefile. Es prüft sogar, ob Abhängigkeiten und andere Voraussetzungen erfüllt sind, und es versteht eine Reihe von Optionen. Welche das im Einzelfalle sind, erfahren Sie über das Kommando ./configure --help | less. Die Zeichen ./ vor dem Skript-Aufruf sind wichtig, weil sich die Datei configure nicht in einem Verzeichnis der Umgebungsvariable $PATH liegt (Listing 3).

Listing 3

Die Configure-Optionen

[localhost] $ <B>./configure --help | less<B>
[…]
Optional Features:
  --enable-gpgme          Enable GPGME support
  --disable-pgp           Disable PGP support
  --without-gdbm          Don't use gdbm even if it is available
  --with-slang            Use S-Lang instead of ncurses
[…]

Die optionalen Features gliedern sich häufig in zwei Paare: enable/disable und with/without. So bedeutet bei einem Mail-Programm der Parameter --enable-pop, dass Sie die POP3-Unterstützung freischalten, während --disable-nls einen standardmäßig aktivierten NLS-Support abschaltet.

Die Optionen with/without beziehen sich gerne auf einzubindende Bibliotheken. Ein --with-ssl kompiliert zum Beispiel das Pogramm mit SSL-Unterstützung, die natürlich die Anwesenheit der SSL-Library voraussetzt.

Nach dem ersten Lauf des Shell-Skriptes sehen Sie sehr schnell, ob alle notwendigen Tools und Bibliotheken auf Ihrem System vorhanden sind. Im Beispiel in Listing 4 bemängelt configure das Fehlen der GTK-Entwicklerbibliothek libgtk2.0-dev und bricht seinen Durchlauf ab, ohne ein Makefile zu erzeugen.

Listing 4

Configure bricht ab

[localhost] $ <B>./configure<B>
checking for gcc… gcc
checking for C compiler default output file name… a.out
[…]
checking for gtk+-2.0… no
configure: error: libgtk2.0-dev missing please install libgtk2.0-dev

Jetzt hilft Ihnen ein Frontend zum Paketmanagement Ihrer Distribution weiter, beispielsweise mit einem apt-cache search libgtk. Das von Debian verwendete apt-cache ist nur eine Möglichkeit von vielen. Als Suse-Anwender steht Ihnen für solche Aufgaben das Skript pin zur Verfügung. Nun gilt es, die vermisste Library nachzuinstallieren. Als Debianer genügt Ihnen dazu der Befehl apt-get install libgtk2.0-dev.

Ein Configure-Lauf ohne Optionen kommt selten vor, denn gerade die Optionen des Befehls machen einen Selbstbau interessant. Wie Sie eine Liste der unterschiedlichen Parameter bekommen, wissen Sie inzwischen. Die interessanteste (und vermutlich die meist genutzte) Option lautet --prefix=. Mit Ihr verraten Sie make, in welches Verzeichnis es die Programmdateien kopieren soll. Beispiel: ./configure --prefix=/home/andreas/terminal.

Im obigen Beispiel landen, von der Manpage bis zur Programm, alle Dateien des Terminal-Emulators mrxvt unterhalb des Verzeichnisbaumes /home/andreas/terminal, wie die Ausgabe von make install zeigt:

[localhost] $ <B>make install<B>
[…]
/usr/bin/install -c -m 644 'TIPS↩
' '/home/andreas/terminal/share/↩
doc/mrxvt/TIPS'
[…]
/usr/bin/install -c -m 644 './mr↩
xvt.1' '/home/andreas/terminal/m↩
an/man1/mrxvt.1'
[…]
/usr/bin/install -c 'mrxvt' '/ho↩
me/andreas/terminal/bin/mrxvt'

Das Programm make ruft nun die Befehle aus dem Target install auf und kopiert so die Dateien TIPS, mrxvt.1 und mrxvt gemäß der von Ihnen gewünschten Vorgaben. Die Modus-Option -m für das Programm install ändert die Zugriffsbits [2] der kopierten Dateien. Die gesamte Installation geht über die Bühne, ohne dass Sie in diesem Fall die Rechte des Superusers root brauchen.

Damit Sie zum Start des Terminal-Emulators nicht jedesmal den vollen Verzeichnisnamen /home/andreas/terminal/bin/mrxvt eintippen müssen, nehmen Sie den Pfad in die Umgebungsvariable $PATH auf. Dazu fügen Sie die Zeile PATH=$PATH:/home/andreas/terminal/bin in die Konfigurationsdatei Ihrer Shell ein (beispielweise in der Datei ~/.bashrc). Anschließend laden Sie die neue Konfiguration mit dem Kommando . ~/.bashrc, und mrxvt lässt sich ohne Umstände in der Bash starten.

Wenn das Terminal schon als /usr/bin/mrxvt existiert und sie statt dessen Ihr mrxvt nutzen wollen, dann ändern Sie den Eintrag in PATH=/home/andreas/terminal/bin:$PATH. Jetzt findet die Shell Ihr lokales mrxvt im Heimatverzeichnis vor dem systemweiten /usr/bin/mrxvt.

Aber warum überhaupt sollten Sie als User ein Programm ins Home-Verzeichnis installieren? Einerseits spricht dafür die noch striktere Trennung von Eigenbauten und distributionseigenen Programme. Selbst bei angepassten Pfaden kann make install, dank einer Unaufmerksamkeit des Programmierers, Dateien in Bereiche des Systems kopieren, die unter der Obhut des Paketmanagements stehen. Daneben bietet dieser Weg die Möglichkeit, relativ ungefährdet Programme zu testen, die sich noch im Beta-Stadium befinden.

Ein weiterer Grund, der sich nicht auf Ihr Heimatverzeichnis beschränkt, hat mit der Sicherheit zu tun: Sowohl der Inhalt des Configure-Skripts [4] als auch des Makefiles [3] kann Ihr System ruinieren, wenn make anschließend mit den Befugnissen von root arbeitet und Angaben fehlerhaft sind.

Vermeiden Sie es darum, mit Administrator-Rechten den Einzeiler ./configure && make && make install in die Shell zu tippen – es könnte der letzte Befehl sein, den Ihr Rechner von Ihnen akzeptiert. Die Befehle configure und make gehören in die Hände eines Users. Erst dann kommt root mit make install zum Zuge. Auf diese Weise werden Sie noch lange Freude an Ihrem freien Betriebssystem haben.

Infos

[1] Wiki-Eintrag "Patch": http://www.vdr-wiki.de/wiki/index.php/Patches

[2] Heike Jurzik, Gleiches Recht für alle?, LinuxUser 07/2004, S. 69: http://www.linux-user.de/ausgabe/2004/07/069-zubefehl/

[3] "rm -rf $DIR /" im Makefile: http://www.theparallax.org/dcoul/user2root/stories.shtml

[4] Hintertür im configure-Skript des ICQ-Cients Irssi: http://real.irssi.org/?page=backdoor

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

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...
Treiber
Michael Kristahn, 12.03.2014 08:28, 5 Antworten
Habe mir ein Scanner gebraucht gekauft von Canon CanoScan LiDE 70 kein Treiber wie bekomme ich de...