QT: Fehler beim Laden von Shared Library
-
Hallo,
ich habe gerade QT angefangen und wollte ein Hallo Welt Programm erstellen. Das Compilieren von QT und des Hello World Programms hat super geklappt (ohne Fehler). Nur das starten klappt nicht. Die Fehlermeldung:
./hello: error while loading shared libraries: libqt.so.3: cannot open shared object file: No such file or directory
Dann hab ich mich auf die Suche nach dieser Datei gemacht und sie lag im bin Verzeichnis von QT. Dann hab ich alle Dateien aus diesem Ordner in mein Homeverzeichnis kopiert, wo auch das "hello" Programm liegt. Aber wieder die selbe Fehlermeldung. Was kann ich tun? Bin totaler Linux + Qt Neuling.
-
Sorry, hab mich vertan, es war nicht das "bin" Verzeichnis sondern natürlich das "lib" Verzeichnis wo ich diese Datei gefunden hab. Ändert aber nix am Problem.
-
- Überprüfe, ob der Link tatsächlich auf eine Datei zeigt oder ins Leere geht.
- Checke per "echo $QTDIR" ob die QTDIR-Umgebungsvariable korrekt gesetzt ist"
-
Hallo,
wie überprüfe ich den ob der Link ins Leere geht? Unten im Dateibrowser steht
libqt.so.3 -> lib.so.3.xxx (kanns gerade nicht nachgucken)
Und diese Datei existierte glaub ich auch.
Das mit dem setzen der Umgebungsvariablen hat bei mir irgendwie nicht geklappt. Ich hab beim Compilieren mit dem g++ einfach anstatt $QTDIR /usr/local/qt/...
angegeben. Brauch man diese Umgebungsvariable um die Shared Object Datei zu finden? Ich habe die Datei ja wie gesagt auch in den selben Ordner wie das Programm kopiert und es klappte trotzdem nicht.Gibt's über KDE eine Möglichkeit Umgebungsvariablen zu setzen? Also ich hab das nach der Anleitung von Trolltech gemacht und folgendes in die .profile Datei in meinem Homeverzeichnis geschrieben:
QTDIR=/usr/local/qt PATH=$QTDIR/bin:$PATH MANPATH=$QTDIR/man:$MANPATH LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH export QTDIR PATH MANPATH LD_LIBRARY_PATH
Aber die Umgebungsvariblen wurden aus irgendeinem Grund nicht übernommen.
-
Vergiss das mit QTDIR, das war ein Gedankenfehler meinerseits, dann hätte sich Dein Compiler ja bereits beschwert!
Es kann schon sein, dass libqt.so.3 auf eine existierende Datei zeigt, aber die könnte auch ein Link sein, der ins Leere geht! Überprüf das mal!Mach einfach
ls -l libqt.so.3
um das zu checken!
@Umgebungsvariablen werden nicht korrekt gesetzt: Versuch mal ein explizites
source ~/.profile
!
-
Hat sich erledigt.
Ich musste den Lib-Pfad in die Datei /etc/ld.so.conf eintragen und einmal "ldconfig" starten. Davon stand aber garnichts in der Installationsanleitung.
Na hauptsache es läuft jetzt.
Danke nman und alle die reingeschaut haben. :p
-
Original erstellt von <Matthias>:
Ich musste den Lib-Pfad in die Datei /etc/ld.so.conf eintragen und einmal "ldconfig" starten. Davon stand aber garnichts in der Installationsanleitung.Weil das bei fast allen großen Distros standardmäßig erledigt wird (vermute ich mal).
Aber: hauptsache es läuft jetzt.
-
ah nman hat ja nochmal geantwortet.
also wenn ichsource .profile
starte und dannach $QTDIR ausgeben lasse wird's ordnungsgemäß ausgegeben. Aber wenn ich mich neueinlogge ist alles wieder weg. Ich kann/will doch nicht jedes Mal diesen Befehl ausführen.
-
Jo, ich benutze Mandrake 9 und in der Datei stand tatsächlich schon ein Pfad von QT drin. Aber das war wohl eine ältere Version, wo es diese Datei noch nicht gab.
-
Weiss noch jemand eine Lösung für das Problem mit den Umgebungsvariablen? Ich will doch nicht bei jedem Login immer "source .profile" aufrufen. Hat jemand eine Idee, warum das nicht automatisch passiert?
-
schreib doch den Aufruf von source .profile in die .bashrc, dann macht der das alleine
-
Danke kingruedi, hat geklappt.
-
Was macht den überhaupt dieser 'source´ Befehl? 'man source´ oder 'source --help´ brachte nichts. Und wann wird die '.bashrc´ ausgeführt? Bei jedem Start einer Bash-Konsole?
-
Original erstellt von kingruedi:
schreib doch den Aufruf von source .profile in die .bashrc, dann macht der das alleineUnd erstell (der Vollständigkeit) halber einen Symlink .profile auf .bashrc!
Original erstellt von kingruedi:
Was macht den überhaupt dieser 'source´ Befehl? 'man source´ oder 'source --help´ brachte nichts. Und wann wird die '.bashrc´ ausgeführt? Bei jedem Start einer Bash-Konsole? confusedEr lässt Deine Shell die Befehle in einer Datei ausführen, wie zB auch ". /path/dateiname"!
Ja.