Home / LinuxUser / 2005 / 07 / Programme selber kompilieren

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Mandriva gibt Distribution in die Hände der Community
(268 Punkte bei 24 Stimmen)
Neues vom Systemd
(161 Punkte bei 4 Stimmen)
Mandriva in Nöten
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 10000 Shops,
3.5 Mio Artikel. Alle Bestseller, Servertechnik und Technik Themenwelten.

Notebooks und Netzwerkhardware bei Mercateo günstig kaufen.
Internet Telefonie mit VoIP Telefonen von Gigaset
Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.
Günstige Digitalkameras finden Sie im Preisvergleich.

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

Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

Hits
Wertung: 110 Punkte (2 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 06/2012

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

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

Tipp der Woche

Adobe AIR
Adobe-AIR-Programme installieren und (manuell) starten
Tim Schürmann, 14.05.2012 13:09, 0 Kommentare

Es gibt sie noch: neue Anwendungen, die Adobes Integrated Runtime voraussetzen. Aktuellstes und vermutlich auch größtes Beispiel ist das Adventure Botanicula

Aktuelle Fragen

gibt es ein Kommandozeilen Tool, um ein X11-Fenster in ein Anderes einzubetten?
GoaSkin , 21.05.2012 16:44, 0 Antworten
Das XEmbed-Protokoll ist u.A. dazu gedacht, dass man eine X11-Anwendung in eine andere wie ein Wi...
Apache2, Options -Indexes geht nicht
no no, 12.05.2012 19:01, 8 Antworten
Habe in apache2.conf folgendes stehen: Options -Indexes ...
LInux auf Dell LS H500
Andreas Endresl, 09.05.2012 08:54, 2 Antworten
Habe einen alten Dell Latitude LS H500 nur mit ext. Floppy und CD es geht nur immer eines von den...
Datenwiederherstellung unter Ubuntu 12.04 mit "Simple Backup" nach Umzug von Linux Mint
Christian Lottmann, 07.05.2012 13:33, 0 Antworten
Vor dem Umzug auf Ubuntu 12.04 habe ich unter Linux MInt mit "Simple Backup" voll (15.4.2012) und...
DKMS für den propritären NVIDIA-Treiber
Commander Data, 26.04.2012 22:02, 2 Antworten
Hallo an die Gemeinde. Ich habe hier ein interessantes Stück openSuSE gefunden. http://forums.op...