Login
Immer anmelden
SSL Login

 
Newsletter
Werbung
Shopping
International Shopping
 
 


Yatego Shopping bei über 10000 Händlern und über
3 Mio. Artikel.


Linux

:

Linux-Bücher

Handy
Shop

  und Computer.

Viele Services

:

Apple iPad Reader,


Ratgeber,

 

Techniktops,

 

Yatego Clicks

  & über 3000

Gutscheine.

 
Mi, 31. August 2005, 13:01
Nachrichten

»cannot find the library«-Fehler beheben

Es passiert manchmal, dass bei der Erstellung einer neuer Anwendung der Compilerprozess bei der Ausführung von libtool mit der vielsagenden Meldung »libtool: link: cannot find the library« seinen Dienst beendet. Was tun in solch einer Situation? Die Anwendung verwerfen? Nein, ein paar Änderungen können Abhilfe schaffen.

Von

Um das Problem zu lösen, ist es zwar nicht notwendig, aber oftmals hilfreich, die Art der Meldung zu bestimmen. Dazu sollte man als erstes die Ausgabe von libtool ein wenig erweitern. Dazu öffnet man vor dem configure-Prozess die Datei ltmain.sh und sucht nach einem »cannot find the library«-Eintrag. Eine typische Stelle sieht folgendermaßen aus:

$echo "$modename: cannot find the library \`$lib'" 1>&2

Diese Zeile wird durch folgenden Eintrag ergänzt:

$echo "$modename: cannot find the library \`$lib' (lib${name}.la: $deplib)" 1>&2

Nun sollte das Tool etwas gesprächiger bei der Ausgabe sein. Damit ist das eigentliche Problem aber immer noch nicht behoben, denn wir erweitern nur den Output des Tools, ohne dass wir den Fehler behoben haben.

Die eigentliche Behebung des Problems kann auf zweierlei Arten erfolgen. Zum einen kann man das Default-Libtool der Distribution verwenden. Dazu muss das alte Script »ltmain.sh« durch das Distributionseigene aus dem Verzeichnis »/usr/share/libtool/« ersetzt werden.

# cd APPLIKATIONSDIR
# cp /usr/share/libtool/ltmain.sh ALTES_LTMAIN.SH

Sollte nach einem erfolgten »configure« und »make« das Problem immer noch nicht gelöst sein, kann man sich einer zweiten Methode bedienen.

Nicht selten ist es die -pthread-Bibliothek, die nicht korrekt eingebunden wird. Sieht man in der erweiterten Ausgabe von ltmain.sh am Ende der Bibliothek -pthread, so stehen die Chancen gut, den Fehler durch eine kleine Korrektur von ltmain.sh zu tilgen.

Dazu öffnet man die Datei ltmain.sh und sucht nach der Passage »esac # case $deplib« (um die Zeile 1537). Vor diese Zeile wird nun eine neue Zeile hinzugefügt mit dem Inhalt »-pthread) continue;;«. In einer Patch-Darstellung würde es folgendermaßen aussehen:

@@ -1534,6 +1534,7 @@
 alldeplibs=yes
 continue
 ;;
+ -pthread) continue;;
 esac # case $deplib
 if test "$found" = yes || test -f "$lib"; then :
 else

Nun sollte die Anwendung nach einem »./configure« und »make« wie erwartet compilert werden.

Kommentare (Insgesamt: 0 || Kommentieren )
Pro-Linux
Newsletter
Neue Nachrichten