Fehler beim Laden von libGL.so.1

48

Beim Versuch, verschiedene Softwareteile (insbesondere Steam und Yenka) auszuführen, bin ich auf einen ähnlichen Fehler gestoßen: error while loading shared libraries: libGL.so.1: cannot open shared object file: No such file or directory

Ich verwende ein 64-Bit-System mit einer NVidia Optimus-Karte. Ich habe Bumblebee installiert und verwende den nvidia-current-Treiber, anstatt den von NVidia heruntergeladenen, wie empfohlen.

Die Bibliothek (libGL.so.1) befindet sich nicht im obersten Verzeichnis von /usr/lib, jedoch in /usr/lib32/nvidia-current, als Softlink zu /usr/lib32/nvidia-current/libGL.so.304.64.

Ein Ausschnitt aus der Ausgabe von ldconfig -p:

libGL.so.1 (libc6,x86-64, OS ABI: Linux 2.4.20) => /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1
libGL.so (libc6,x86-64, OS ABI: Linux 2.4.20) => /usr/lib/x86_64-linux-gnu/libGL.so
libGL.so (libc6,x86-64, OS ABI: Linux 2.4.20) => /usr/lib/x86_64-linux-gnu/mesa/libGL.so

Offensichtlich wird eine Bibliothek mit diesem Namen geladen, aber sie befindet sich in /usr/lib/x86_64-linux-gnu, die installierte Software scheint sie jedoch nicht "sehen" zu können. Bei Steam funktioniert die Ausführung mit optirun, bei Yenka jedoch nicht. Ich gehe davon aus, dass optirun bewirkt, dass die in gespeicherte Bibliothek /usr/lib32/nvidia-currentverwendet wird, wodurch Steam ausgeführt werden kann, sodass ich nicht verstehen kann, warum Yenka nicht ausgeführt werden kann.

Kann jemand erklären, warum Software die normale Mesa-Bibliothek nicht sehen kann und warum Yenka sich weigert, mit der aktuellen NVIDIA-Bibliothek zu laufen?

p0llard
quelle

Antworten:

40

Mit den installierten NVIDIA-Treibern sucht Skype nach einer i386-Bibliothek, die vom NVIDIA-Paket bereitgestellt wird. Da dies nicht existiert, ist es in Ordnung, die von mesa bereitgestellte i386 libGL.so.1 zu verwenden.

Getestet mit (Ubuntu-Gnome Raring, mit NVIDIA-325) und (Ubuntu-Gnome Saucy, mit NVIDIA-319) konnten wir dies folgendermaßen beheben:

update-alternatives --display i386-linux-gnu_gl_conf

Dies zeigt Ihnen die verfügbaren Optionen.

i386-linux-gnu_gl_conf - auto mode
  link currently points to /usr/lib/nvidia-325/alt_ld.so.conf
/usr/lib/i386-linux-gnu/mesa/ld.so.conf - priority 500
  slave i386-linux-gnu_xorg_extra_modules: /usr/lib/i386-linux-gnu/xorg/x11-extra-modules
/usr/lib/nvidia-325/alt_ld.so.conf - priority 8602
Current 'best' version is '/usr/lib/nvidia-325/alt_ld.so.conf'

Gehen Sie also wie folgt vor:

sudo update-alternatives --config i386-linux-gnu_gl_conf

Wählen Sie dann die beste Alternative aus (ich habe i386-linux-gnu / mesa / ld.so.conf ausgewählt). d / i386-linux-gnu_GL.conf).

  Selection    Path                                     Priority   Status
------------------------------------------------------------
* 0            /usr/lib/nvidia-325/alt_ld.so.conf        8602      auto mode
  1            /usr/lib/i386-linux-gnu/mesa/ld.so.conf   500       manual mode
  2            /usr/lib/nvidia-325/alt_ld.so.conf        8602      manual mode

Press enter to keep the current choice[*], or type selection number: 1
update-alternatives: using /usr/lib/i386-linux-gnu/mesa/ld.so.conf to provide /etc/ld.so.conf.d/i386-linux-gnu_GL.conf (i386-linux-gnu_gl_conf) in manual mode

Versuchen Sie anschließend Folgendes auszuführen:

sudo ldconfig

und dann bist du fertig.

Eurythmie
quelle
2
Ich hatte genau das gleiche und das hat perfekt funktioniert, vielen Dank (Ubuntu 13.10)
Xtremesupremacy3
ärgerlich - ich habe nur die Option ld.so.conf, also bekomme "Es gibt nur eine Alternative in der Linkgruppe i386-linux-gnu_gl_conf (Angabe von /etc/ld.so.conf.d/i386-linux-gnu_GL.conf) : /usr/lib/i386-linux-gnu/mesa/ld.so.conf. Nichts zu konfigurieren. "
dez93_2000
Welche NVIDIA-Pakete hast du installiert? Haben Sie libgl1-mesa-glx installiert? Auf vertrauenswürdigen libgl1-mesa-glx: i386 stellt /usr/lib/i386-linux-gnu/mesa/ld.so.conf (und die zugehörigen libGL.so.1 * -Bibliotheken) bereit.
eurythmia
Gute Antwort. Ich war immer Fehler ein Qt - Programm nach dem Umschalten auf den Nvidia - Treiber läuft - QOpenGLShaderProgram::uniformLocation( matrix ): shader program is not linkedund [xcb] This is most likely caused by a broken X extension library- und im Anschluss an diesen es geklärt.
Matthew Read
Vielen Dank. Es funktioniert auch am 14.04. Andere Programme sind davon nicht betroffen. Wird es? Als würde man eine Sache reparieren, die 10 andere kaputt macht.
Sudhir Khanger
51

Nach der Installation von Skype tritt das gleiche Problem auf. Sie können also beide Schritte ausführen, um diesen Fehler zu beheben.

Als erstes wird die Anwendung mit folgendem Befehl gestartet ... zum Beispiel mit Skype.

LD_PRELOAD=/usr/lib/i386-linux-gnu/mesa/libGL.so.1 skype

QUELLE

2. das was ich getan habe

sudo nano /etc/ld.so.conf.d/skype.conf

und füge die folgende Zeile hinzu

/usr/lib/i386-linux-gnu/mesa/

sicherer Ausgang

und zuletzt rennen

sudo ldconfig -v

Ich hoffe, dass dies Ihren libGL.so.1- Fehler wie meinen beheben wird

Sie finden auch libGL.so.1

   find / -name libGL.so.1
Qasim
quelle
Am Ende habe ich es geschafft, es zu reparieren. Leider kann ich mich nicht erinnern, wie, aber ich erinnere mich, dass es darin bestand, zufällige Symlinks zur Bibliothek zu erstellen, ldconfig häufig auszuführen und dann die oben genannten Symlinks zu entfernen. Alles funktioniert jetzt gut.
p0llard
Das hat gut funktioniert! Endlich! Ich erinnere mich auch daran, was @ jdp407 vor diesen Schritten gesagt hat.
Gundars Mēness
1
Diese Lösung ist zwar gut, verarbeitet jedoch immer nur einzelne Anwendungen. Wenn Sie andere 32-Bit-Anwendungen haben, für die eine libGL.so erforderlich ist, müssen Sie den Vorgang für diese Anwendungen wiederholen. Es ist am besten, diese Einstellung global mit Hilfe von Update-Alternativen
festzulegen
@ Eurythmia Sie können es auch in / lib kopieren und sudo ldconfig ausführen, und es wird globaler Zugriff sein
Qasim
funktioniert unter xubuntu leider nicht : ignoriert "; skype.conf befindet sich in etc / dbus-1 / system.d not /ld.so.conf.d/ und scheint eine andere Datei zu sein ...
dez93_2000
12

Die Korrekturen hier werden funktionieren, aber es gibt eine einfachere.

Wenn skypees nicht funktioniert, aber optirun skypees funktioniert, können Sie es beheben mit:

sudo apt-get install bumblebee-nvidia --reinstall

(Benutzer von Bumblebee mit AMD-Karten müssen möglicherweise die entsprechende Neuinstallation durchführen.)

Bumblebee verursacht und behebt dieses Problem, das Update wird jedoch bei der Installation angewendet, wenn die libGL-Bibliotheken sowohl für die integrierte Karte als auch für die leistungsstärkere Karte verfügbar sind. Dies ist nicht der Fall, wenn diese Bibliotheken bei der Installation von Bumblebee noch nicht installiert waren und daher eine Neuinstallation erforderlich ist. Es sollte auch keine Auswirkungen auf Ihre Hummelkonfiguration haben, obwohl es sich offensichtlich lohnt, dies zu überprüfen, nachdem Sie dies getan haben.

Jon Hanna
quelle
3
es funktioniert gut für mich ... danke. Ubuntu gnome 14.04
aditia
1
Auf jeden Fall die einfachste Lösung! Ich wusste, dass dies etwas mit der Installationsreihenfolge zu tun hat, da ich mein System kürzlich zweimal neu installiert habe (Ubuntu 14.04 64bit + Nvidia Optimus-Grafikkarte). Beim ersten Mal habe ich zuerst Skype und dann Bumblebee installiert. In diesem Fall hatte ich keine Probleme. Beim zweiten Mal, als ich zuerst Bumblebee und dann Skype installiert habe, trat dieses Problem auf. Die in dieser Antwort gezeigte Neuinstallation von bumblebee-nvidia löste das Problem!
Sicco
Ich bin geneigt zuzustimmen, dass dies eine bessere Lösung ist als meine.
Eurythmie
2

Bearbeiten Sie den Desktop-Eintrag:

sudo nano /usr/share/applications/skype.desktop

Ändern Sie die Exec zu:

Exec=env PULSE_LATENCY_MSEC=60 LD_PRELOAD=/usr/lib/i386-linux-gnu/mesa/libGL.so.1 skype %U

Das läuft:

LD_PRELOAD=/usr/lib/i386-linux-gnu/mesa/libGL.so.1

vor dem Ausführen von Skype, wenn Sie es mit dem Startprogramm / Desktop-Eintrag starten.

Danach sollte es einwandfrei funktionieren, solange Sie es mit dem Application Launcher starten.

Hazmat
quelle
Die Datei befindet sich libGL.so.1möglicherweise nicht in diesem Pfad (für mich nicht unter Debian 8 / Jessie). Um den Pfad zu finden , die Sie setzen in muss LD_PRELOADeinfach die i386 - Datei auf Ihrem System finden: sudo find / -name libGL.so.1 2>/dev/null. Ich fand es in /usr/lib/mesa-diverted/i386-linux-gnu/libGL.so.1und es funktionierte gut damit als LD_PRELOAD.
f.ardelian
1

Ich bin mir nicht sicher, ob dies zur Klärung beitragen wird oder nicht, aber ich hatte das gleiche Problem mit Skype und libGL.so.1. Läuft auch 13.04 mit Optimus Card und Hummel.

Ich habe das Problem mit Skype ohne optirun, aber es hat gut funktioniert. Ich habe die Desktop-Datei so geändert, dass sie jedes Mal mit optirun und voila ausgeführt wird. Fest!


quelle
Nicht wirklich behoben, da Sie jetzt die energiegierigere Karte für Skype verwenden. In der Tat, wenn Sie die VirtualGL-Bridge anstelle von Primus verwenden, verbrauchen Sie im Wesentlichen so viel Strom, als ob Sie keine Hummel installiert hätten und nur die NVIDIA-Karte die ganze Zeit verwendet hätten.
Jon Hanna
1

Ich hatte ein ähnliches Problem und löste es, indem ich 32-Bit-Bibliotheken auf meinem 64-Bit-System installierte: apt-get install ia32-libs

Matt
quelle
0

Laden Sie die neueste Version von der offiziellen Steam-Seite herunter, und lassen Sie sie dann vom Terminal herunterladen (falls erforderlich). als addieren Sie Hummel ppa, wenn Sie nicht bereits taten.

sudo add-apt-repository ppa:bumblebee/stable

aktualisiere es mit diesem Befehl:

sudo apt-get update

und installiere virtualgl(das hat den libgl.so.1Fehler für mich in Steam behoben )

sudo apt-get install virtualgl
Addae Dans
quelle
0

Versuchen:

sudo apt-get install libgl1-mesa-glx-lts-utopic:i386
Esel
quelle