Erreur lors du chargement de libGL.so.1

48

En essayant d'exécuter divers logiciels (notamment Steam et Yenka), j'ai rencontré une erreur similaire à celle-ci: error while loading shared libraries: libGL.so.1: cannot open shared object file: No such file or directory

J'utilise un système 64 bits avec une carte NVidia Optimus (je double amorçage pour certains logiciels uniquement sous Windows nécessitant une carte graphique dédiée). Bumblebee est installé sur mon ordinateur et j'utilise le pilote nvidia-current plutôt que le pilote téléchargé depuis NVidia, comme recommandé.

La bibliothèque (libGL.so.1) n'est pas présente dans le répertoire supérieur de /usr/lib, mais elle est présente dans /usr/lib32/nvidia-current, en tant que lien symbolique vers /usr/lib32/nvidia-current/libGL.so.304.64.

Une section de la sortie de 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

De toute évidence, une bibliothèque portant ce nom est en cours de chargement, mais elle se trouve dans /usr/lib/x86_64-linux-gnu, mais les logiciels installés ne semblent pas en mesure de le "voir". Pour Steam, son utilisation avec optirun le fait fonctionner, mais ce n'est pas le cas pour Yenka. Je suppose que optirun entraîne l'utilisation de la bibliothèque stockée /usr/lib32/nvidia-current, ce qui permet à Steam de fonctionner, donc je ne comprends pas pourquoi Yenka ne fonctionne pas.

Quelqu'un peut-il expliquer pourquoi les logiciels ne peuvent pas voir la bibliothèque mesa normale et pourquoi Yenka refuse de s'exécuter avec la bibliothèque nvidia-current?

P0llard
la source

Réponses:

40

Avec les pilotes nvidia installés, skype recherche une lib i386 fournie par le paquet nvidia. Comme cela n’existe pas, vous pouvez utiliser le libGL.so.1 i386 fourni par mesa.

Testé sur (ubuntu-gnome raring, en utilisant nvidia-325) et (ubuntu-gnome chou, en utilisant nvidia-319), nous avons pu résoudre ce problème de la manière suivante:

update-alternatives --display i386-linux-gnu_gl_conf

Cela vous montrera quelles sont les options disponibles.

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'

alors, procédez comme suit:

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

puis sélectionnez la meilleure alternative (j'ai sélectionné i386-linux-gnu / mesa / ld.so.conf): Dans la sortie ci-dessous, il existe deux choix pour l'alternative i386-linux-gnu_gl_conf (fournissant /etc/ld.so.conf. 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

Une fois que vous avez terminé, essayez de lancer:

sudo ldconfig

et puis vous avez terminé.

eurythmie
la source
2
J'avais exactement la même chose et cela fonctionnait parfaitement, merci beaucoup (Ubuntu 13.10)
Xtremesupremacy3
gênant - je n'ai que l'option ld.so.conf, alors get "Il n'y a qu'une alternative dans le groupe de liens i386-linux-gnu_gl_conf (fournissant /etc/ld.so.conf.d/i386-linux-gnu_GL.conf) : /usr/lib/i386-linux-gnu/mesa/ld.so.conf. Rien à configurer. "
dez93_2000
quels paquets nvidia avez-vous installés? Avez-vous libgl1-mesa-glx installé? Sur libgl1-mesa-glx: i386 fournit les bibliothèques /usr/lib/i386-linux-gnu/mesa/ld.so.conf (et les bibliothèques associées libGL.so.1 *.
eurythmia
Très bonne réponse. J'avais des erreurs lors de l'exécution d'un programme Qt après avoir basculé dans le pilote Nvidia - QOpenGLShaderProgram::uniformLocation( matrix ): shader program is not linkedet [xcb] This is most likely caused by a broken X extension library- et après cela, tout a été éclairci.
Matthew Lu
Merci. Cela fonctionne le 14.04 aussi. Cela ne va affecter aucun autre programme. Est-ce que cela va? Comme réparer une chose en casse 10 autres.
Sudhir Khanger
51

J'ai le même problème après l'installation de Skype ... vous pouvez donc faire l'une ou l'autre chose pour corriger cette erreur ..

La première est exécutée en suivant la commande ... par exemple, im skype ..

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

LA SOURCE

2e que ce que j'ai fait

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

et ajoutez la ligne suivante dedans

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

sauvegarder et quitter

et enfin couru

sudo ldconfig -v

J'espère que cela corrigera votre erreur libGL.so.1 comme il l'a fait pour moi

Vous pouvez aussi trouver libGL.so.1

   find / -name libGL.so.1
Qasim
la source
J'ai réussi à le réparer à la fin. Malheureusement, je ne me souviens plus comment, mais je me souviens que cela consistait à créer des liens symboliques aléatoires vers la bibliothèque, à exécuter beaucoup ldconfig, puis à supprimer les liens symboliques susmentionnés. Tout fonctionne bien maintenant.
p0llard
Cela a bien fonctionné! Finalement! De plus, je me souviens de ce que @ jdp407 avait dit avant ces étapes.
Gundars Mness
1
Bien que cette solution soit bonne, elle ne gère jamais qu'une application à la fois. Si vous avez d'autres applications 32 bits qui nécessitent un libGL.so, vous devrez répéter le processus pour ces applications. Il est préférable de définir cette préférence globalement en utilisant update-alternatives
eurythmia
@eurythmia Vous pouvez également le copier dans / lib et exécuter sudo ldconfig pour un accès global
Qasim
malheureusement, cela ne fonctionne pas pour moi sur xubuntu, "ERREUR: ld.so: objet '/usr/lib/i386-linux-gnu/mesa/libGL.so.1' de LD_PRELOAD ne peut pas être préchargé (impossible d'ouvrir un fichier objet partagé) : ignoré "; skype.conf est dans etc / dbus-1 / system.d pas /ld.so.conf.d/ et semble être un fichier différent ...
dez93_2000
12

Les corrections ici fonctionneront, mais il y en a une plus simple.

Si skypene fonctionne pas mais optirun skypefonctionne, vous pouvez le réparer avec:

sudo apt-get install bumblebee-nvidia --reinstall

(Les personnes utilisant Bumblebee avec des cartes AMD devront peut-être effectuer une réinstallation équivalente).

Bumblebee est à la fois la cause et le problème, mais le correctif qu’il s’applique s’applique lors de l’installation, lorsque les librairies libGL sont disponibles pour la carte intégrée ainsi que pour la carte plus puissante. Cela ne se produira pas si ces bibliothèques n'étaient pas déjà installées lors de l'installation de Bumblebee, nécessitant donc une réinstallation. Cela ne devrait pas affecter votre configuration de bourdon non plus, bien que ça vaille la peine de vérifier après l'avoir fait.

Jon Hanna
la source
3
ça marche bien pour moi ... merci. Ubuntu gnome 14.04
aditia
1
Certainement la solution la plus simple! Je savais que cela avait quelque chose à voir avec l'ordre d'installation car j'ai réinstallé mon système deux fois récemment (carte graphique Ubuntu 14.04 64bit + Nvidia Optimus). La première fois que j'ai installé Skype, puis Bumblebee, je n'avais aucun problème. La deuxième fois, j’ai installé Bumblebee, puis Skype, et ce problème est survenu. Réinstaller simplement bumblebee-nvidia comme indiqué dans cette réponse a résolu le problème!
Sicco
Je suis enclin à convenir que cela semble être une meilleure solution que la mienne.
eurythmie
2

Modifier l'entrée du bureau:

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

Remplacez l'Exec par:

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

Cela fonctionne:

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

avant d’exécuter Skype lorsque vous le lancez avec l’entrée de lancement / bureau.

Il devrait ensuite fonctionner correctement si vous le démarrez à l'aide du programme de lancement d'applicatifs.

hazmat
la source
Le fichier libGL.so.1peut ne pas être dans ce chemin (ce n'était pas pour moi sur Debian 8 / Jessie). Pour trouver le chemin que vous devez mettre en LD_PRELOADtrouver simplement le fichier i386 sur votre système: sudo find / -name libGL.so.1 2>/dev/null. Je l'ai trouvé dans /usr/lib/mesa-diverted/i386-linux-gnu/libGL.so.1et cela a bien fonctionné en utilisant cela comme LD_PRELOAD.
f.ardelian
1

Je ne sais pas si cela aidera à clarifier ou non, mais j'avais le même problème avec skype et libGL.so.1. Exécution également 13.04 avec une carte Optimus et un bourdon.

J'ai eu le problème sous skype sans Optirun, mais cela a bien fonctionné. Je viens de changer le fichier de bureau pour qu'il fonctionne avec optirun à chaque fois et le tour est joué. fixé!


la source
Pas vraiment résolu, car vous utilisez maintenant la carte plus énergétique pour Skype. En effet, si vous utilisez le pont VirtualGL plutôt que Primus, vous allez essentiellement utiliser autant de puissance que si vous n’aviez pas installé Bumblebee et n’aviez utilisé que la carte nvidia tout le temps.
Jon Hanna
1

J'ai eu un problème similaire et je l'ai résolu en installant des bibliothèques 32 bits sur mon système 64 bits: apt-get install ia32-libs

Mat
la source
0

Téléchargez la dernière version à partir de la page officielle de Steam, puis laissez-la télécharger ce dont elle a besoin depuis le terminal (le cas échéant). que d’ajouter bumblebee ppa si vous ne l’avez pas déjà fait.

sudo add-apt-repository ppa:bumblebee/stable

mettez-le à jour avec cette commande:

sudo apt-get update

et installer virtualgl(qui a résolu le problème d' libgl.so.1erreur pour moi dans Steam)

sudo apt-get install virtualgl
Addae Dans
la source
0

Essayer:

sudo apt-get install libgl1-mesa-glx-lts-utopic:i386
Âne
la source