configure-Fehlermeldungen entschlüsseln

Fehler-Fahnder

Nirgendwo lauern so viele Fehlermeldungen wie beim Kompilieren von Software. Besonders kritisch sind configure-Skripte – Zeit für einen Wegweiser aus dem Fehlerlabyrinth.

Früher oder später erlebt es jeder Linux-Nutzer: Ein heißbegehrtes Programm gibt es nicht als fertiges Paket für die eigene Distribution. Erfahrene Linuxer sind mit dem Ratschlag "Dann kompilier es doch einfach selbst!" schnell bei der Hand. Statt des neuen Programms warten auf ambitionierte Jungkompilierer jedoch meistens nur haufenweise Fehlermeldungen. Da wirft manch einer die Flinte ins Korn und kommt zu dem Schluss, man müsse programmieren können, um Software erfolgreich zu übersetzen.

Das stimmt glücklicherweise nicht, denn der Kompilierprozess ist bei den meisten Anwendungen weitgehend automatisiert. Wer wissen will, wie der aussieht und was bei den drei Schritten ./configure, make und make install passiert, informiert sich in [1] über die Grundlagen.

Der vorliegende Artikel widmet sich den Fehlermeldungen, die Ihnen beim ./configure-Aufruf begegnen. Denn um Software selbst zu übersetzen, ist es wichtig zu wissen, wie man deren Ursache abstellt.

Grundausstattung

Haben Sie den Quellcode einer Anwendung heruntergeladen und entpackt, ist das dabei entstandene Verzeichnis Ihr Arbeitsplatz. Der erste Blick sollte dort den Dateien README und INSTALL gelten. Darin steht, ob Sie das Programm tatsächlich mit dem klassischen Dreisatz übersetzen oder ob Sie zuvor eine Datei bearbeiten müssen. Viele Programmierer verraten hier ebenfalls, ob Sie weitere Software für das Programm benötigen.

Wer anschließend zum ersten Mal auf seinem System den Befehl ./configure eingibt, bei dem bricht das Shell-Skript oft schon kurz nach dem Aufruf mit diesen Meldungen ab:

checking for gcc… no
checking for cc… no
checking for cc… no
checking for cl… no
configure: error: no acceptable C compiler found in $PATH

Es schaut nach, ob alle Dateien vorhanden sind, die Sie brauchen, um die Software zu übersetzen. Was es prüft, steht in den mit checking beginnenden Zeilen. An deren Ende folgt das Ergebnis, hier no, also "nein". Da das Skript erfolglos gesucht hat, beendet es sich und präsentiert eine Fehlermeldung. Selbst wer kein Englisch spricht, übersetzt sie schnell mit einem Wörterbuch: keinen passenden C-Compiler im $PATH gefunden.

Die Variable PATH (dass es eine Variable ist, erkennen Sie am vorangestellten Dollar-Zeichen, einem Operator, der ihren Inhalt anfordert) enthält den Suchpfad für ausführbare Programme. Welche Verzeichnisse er umfasst, variiert von Distribution zu Distribution. Der Befehl echo $PATH zeigt sie an.

Das nicht auffindbare Programm ist ein C-Compiler, die Anwendung, die in der Sprache C geschriebene Software in ein ausführbares Programm übersetzt. Unter Linux kommt dafür gewöhnlich der gcc zum Einsatz. Dieses unentbehrliche Werkzeug installiert mittlerweile fast keine Distribution mehr standardmäßig mit.

Tabelle 1 listet die Pakete auf, mit denen Sie Ihr System fit fürs Kompilieren machen. Dazu gehören nicht nur das Handwerkszeug wie der Compiler und das Programm make, sondern auch Entwicklerpakete, die Dateien enthalten, die Sie beim Übersetzen grafischer Anwendungen brauchen.

Lassen Sie sich nicht von der Paketbeschreibung dieser Devel-Pakete verwirren: Sie suggeriert, Sie brauchten diese Dateien nur, um selbst Software zu schreiben. Allerdings sind sie auch nötig, um fertig geschriebenen Quellcode zu übersetzen.

Spielen Sie die Entwicklerpakete über die Paketverwaltung Ihrer Distribution ein (Abbildung 1)! Wer die Personal-Version von Suse Linux verwendet, muss die meisten davon vom Suse-FTP-Server herunterladen: Dieses Produkt bringt nämlich fast keine Entwicklerpakete mit.

Abbildung 1: In der Kategorie "Entwicklung" finden Sie bei Suses Yast die Pakete, die Sie zum Kompilieren brauchen.

Tabelle 1: Grundausstattung für ein Entwicklersystem

Paket Inhalt
gcc Compiler für in C geschriebene Software.
gcc-c++ Compiler für in C++ geschriebene Software.
libstdc++-devel Entwicklerdateien zum Übersetzen von C++-Programmen.
make Programm für die automatisierte Übersetzung von Quellcode anhand einer "Regeldatei", des Makefiles.
binutils Programme zur Bearbeitung binärer Dateien, unter anderem der Archiverzeuger ar und strip, das Debugging-Informationen aus Programmen und Bibliotheken entfernt.
glibc-devel Entwicklerdateien der C-Bibliothek.
gettext und gettext-devel Programme und Dateien, um Software mehrsprachig zu übersetzen – notwendig, wenn Sie eine deutsche Programmoberfläche nutzen wollen. Bei manchen Distributionen gibt es kein gettext-devel-Paket; die entsprechenden Dateien enthält bereits gettext.
XFree86-devel (bei manchen Distributionen libxfree86-devel) Entwicklerdateien des grafischen Systems.
libpng-devel Entwicklerdateien der Bibliothek, die Grafiken im PNG-Format darstellt. Fast alle grafischen Anwendungen nutzen diese Bibliothek.
libjpeg-devel Entwicklerdateien der Jpeg-Bibliothek.
zlib-devel Entwicklerdateien der Kompressionsbibliothek zlib.
gtk-devel Entwicklerdateien von gtk; nötig für das Kompilieren von gtk1.x-Anwendungen wie Sylpheed, einem Mailprogramm.
gtk2-devel Entwicklerdateien von gtk2; nötig für das Übersetzen aller gtk2-Programme, z. B. Gimp 2.0.
kdelibs-devel (manchmal auch kdelibs3-devel für KDE 3.x) Entwicklerdateien der KDE-Bibliothek; Mindestvoraussetzung zum Übersetzen von KDE-Programmen.
qt3-devel (bei manchen Distributionen libqt3-devel) Entwicklerdateien der Qt-Bibliothek, die ebenso wie GTK Elemente für die Oberfläche eines Programms bereitstellt; nötig um KDE- und reine Qt-Anwendungen zu übersetzen.
Bei manchen Distributionen (z. B. Debian) tragen die Entwicklerpakete nicht den Zusatz devel, sondern dev.

Eine solche Grundausstattung eliminiert die Ursache der meisten Fehlermeldungen. Tauchen nun noch welche auf, ist ein wenig detektivisches Gespür gefragt.

Wer suchet, der findet

Den wohl häufigsten Typ von configure-Fehlermeldungen zeigt Listing 1.

Listing 1

configure-Fehlermeldung bei fehlendem Entwicklerpaket

[andi@diabolos squaroid-0.60.3]./configure[…]
checking for GTK - version >= 1.2.0… yes
checking for imlib-config… no
checking for gdk_imlib… not found
configure: error: Cannot find gdk_imlib: I NEED IT!

Das Konfigurationsskript beschwert sich hier über eine fehlende gdk_imlib (bei Ihrer Wunschanwendung fehlt stattdessen vielleicht krb5.h oder lidSDL.so). Die Zeile checking for imlib-config... no enthält das Prüfkriterium: configure sucht nach dem Skript imlib-config. Da es das nicht findet – no –, kommt es zu dem Schluss, dass es gdk_imlib auf dem System nicht gibt (checking for gdk_imlib... not found).

Ob die Datei imlib-config auf Ihrem System tatsächlich fehlt oder configure nur schlecht gesucht hat, erfahren Sie mit locate imlib-config. Alternativ benutzen Sie find [4], das jedoch wesentlich länger sucht, da es nicht auf eine Datenbank zurückgreift.

Verläuft die Suche ergebnislos, fehlt die Datei also tatsächlich, gilt es, sie nachzuinstallieren. Aber wie erfährt man, in welchem der unzähligen Distributionspakete sie sich befindet? Unter Mandrake und Suse Linux ist das dank der mitgelieferten Tools ein Kinderspiel: Wer Mandrake verwendet, tippt den Befehl urpmf imlib-config ein. Der Paketverwalter durchforstet daraufhin seine Datenbank und zeigt Ihnen, welche Dateien imlib-config enthalten und in welchem Paket sie stecken (Abbildung 2). Ein zusätzliches urpmf gdk_imlib verrät, dass auch die Entwicklerdateien im Paket libimlib1-devel liegen.

Abbildung 2: Unter Mandrake sucht "urpmf" in einer Datenbank, die eine Dateiliste für alle distributionseigenen RPM-Pakete enthält.Unter Suse Linux greifen Sie auf pin zurück. Beim ersten Aufruf fordert es das Installationsmedium an, um die Archivdatei mit der Paketübersicht auf die Festplatte zu kopieren. Dieses Mal müssen Sie sich daher als Administrator authentifizieren. Danach verrät Ihnen der Aufruf pin imlib-config, dass das gleichnamige Paket die Datei enthält. pin gdk_imlib liefert imlib-devel als Treffer. Unter Suse Linux installieren Sie diese beiden Pakete, damit configure nicht mehr abbricht.

Schwerer haben es alle, die die Personal-Version von Suse oder Red Hat Linux verwenden. Red Hat bringt gar kein Programm mit, mit dem man in der Dateiliste noch nicht installierter Pakete suchen kann. Bei Suse Personal führt die Suche nach Entwicklerdateien meistens ins Leere, da die nötigen Pakete nicht auf den CDs dabei sind.

Eine Alternative für diese Fälle bietet die Suchmaschine für RPM- und Debian-Pakete unter [2]. Das Formular fahndet auch nach einzelnen Dateien und zeigt die Pakete an, die sie enthalten (Abbildung 3). Debianer werden zudem unter http://packages.debian.org/ fündig.

Abbildung 3: Rpmseek.com sucht nicht nur nach Paketen, sondern akzeptiert auch Dateinamen als Suchbegriff.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • deskTOPia: idesk
    Auf den Programmstart per Mausklick müssen Nutzer einfacher Fenster-Manager meist verzichten. Idesk schafft Abhilfe und verpasst ihrem Desktop nebenbei eine Schönheits-OP.
  • Gnome selbst kompilieren mit Garnome
    Fertige Pakete für die neue Gnome-Version gibt es bisher für die wenigsten Distributionen. Als Ersatz hilft das Skript Garnome beim Selbstkompilieren; damit machen Sie sich unabhängig vom Distributor.
  • GIMP aus dem Git-Repository installieren
  • Mpeg Menu System V2
    Linux und Multimedia, das ist nicht immer eine glückliche Verbindung. Wir stellen das Mpeg Menu System vor, das verspricht, Filme und Musik in vielen Formaten abzuspielen – sogar ohne KDE & Co.
  • Grafische Arbeitsumgebung jenseits von KDE und Gnome
    Es muss nicht immer KDE oder Gnome sein: Mit Xfce steht den Liebhabern der grafischen Arbeitsumgebungen eine vielversprechende Desktop-Umgebung zur Verfügung, die nicht nur schlank und schnell ist, sondern auch über zahlreiche Tools verfügt. Dieser Artikel nimmt den Neuling unter den Desktop Environments genauer unter die Lupe.
Kommentare

Infos zur Publikation

LU 08/2016: Multimedia

Digitale Ausgabe: Preis € 5,99
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Aktuelle Fragen

Wie kann man das berichtigen
Udo Muelle, 17.07.2016 20:39, 1 Antworten
Fehlschlag beim Holen von http://extra.linuxmint.com/dists/rosa/main/binary-i386/Packages Hash-S...
Installation Genimotion
Horst Müller, 15.07.2016 17:00, 1 Antworten
Hallo, ich kann Genimotion nicht installieren. Folgende Fehlermeldung habe ich beim Aufruf erh...
Probleme beim Hochfahren der Terastaion 5400 mit Unix-Distrib
Sheldon Cooper, 10.07.2016 09:32, 0 Antworten
Hallo ihr lieben, habe seit zwei Tagen das Problem, das das NAS (Raid5) nicht mehr sauber hoch...
Mit Firewire Videos improtieren?
Werner Hahn, 09.06.2016 11:06, 5 Antworten
Ich besitze den Camcorder Panasonic NV-GS330, bei dem die Videos in guter Qualität nur über den 4...
lidl internetstick für linux mint
rolf meyer, 04.06.2016 14:17, 3 Antworten
hallo zusammen ich benötige eure hilfe habe einen lidl-internetstick möchte ihn auf linux mint i...