web-dev-qa-db-fra.com

Pourquoi mes bibliothèques OpenGL 32 bits pointent-elles sur mesa au lieu de nvidia, et comment puis-je résoudre ce problème?

J'ai installé les pilotes Nvidia sur mon système Ubuntu 13, mais selon cette commande (ldconfig -p | grep GL):

$ ldconfig -p | grep GL
    libQtOpenGL.so.4 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libQtOpenGL.so.4
    libGLU.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libGLU.so.1
    libGLEWmx.so.1.8 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libGLEWmx.so.1.8
    libGLEW.so.1.8 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libGLEW.so.1.8
    libGLESv2.so.2 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/mesa-egl/libGLESv2.so.2
    libGL.so.1 (libc6,x86-64) => /usr/lib/libGL.so.1
    libGL.so.1 (libc6) => /usr/lib/i386-linux-gnu/mesa/libGL.so.1
    libGL.so (libc6,x86-64) => /usr/lib/libGL.so
    libEGL.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/mesa-egl/libEGL.so.1

La version 32 bits d'OpenGL pointe vers les bibliothèques de mesa au lieu de nvidia. Cela fait que mes jeux Steam refusent de se lancer avec l'erreur:

Impossible de trouver le point d'entrée OpenGL requis 'glGetError'! Votre carte vidéo n'est pas prise en charge ou votre pilote OpenGL doit être mis à jour.

Pourquoi est-ce le cas? Lorsque le programme d'installation de nvidia m'a demandé si je voulais installer des "bibliothèques de compatibilité 32 bits" (ou quelque chose du genre), j'ai choisi oui. Comment puis-je réparer ça?


Modifier:

Je viens de réinstaller le même pilote Nvidia, et cela a apparemment supprimé complètement le pilote OpenGL 32 bits:

$ ldconfig -p | grep libGL.so
    libGL.so.1 (libc6,x86-64) => /usr/lib/libGL.so.1
    libGL.so (libc6,x86-64) => /usr/lib/libGL.so

Maintenant, Steam ne démarre pas:

Il manque les bibliothèques 32 bits suivantes et Steam ne peut pas s'exécuter: libGL.so.1

Encore une fois, j'ai choisi YES lorsque le programme d'installation m'a demandé si je voulais installer des bibliothèques 32 bits. Pourquoi ne sont-ils pas installés!?

4
Hubro

Option 1: Essayez de lancer Sudo ldconfig dans un terminal. Redémarrez et essayez.

Option 2: Si cela ne résout pas le problème, vous devrez ajouter manuellement le répertoire des bibliothèques NVidia (/ usr/lib32) au fichier de configuration de ldconfig (/etc/ld.so.conf). .d/libc.conf) puis relancez ldconfig (en tant que root bien sûr)

EDIT: Je voudrais faire une copie de libc.conf avant de le changer.

2
BiggJJ

Lorsque j'ai réinstallé les pilotes Nvidia, tous les pilotes mesa OpenGL ont été supprimés du cache de la bibliothèque. Le cache de ma bibliothèque ressemblait à ceci:

$ ldconfig -p | grep libGL.so
    libGL.so.1 (libc6,x86-64) => /usr/lib/libGL.so.1
    libGL.so (libc6,x86-64) => /usr/lib/libGL.so

Pas de pilotes 32bit là! Heureusement, après une recherche rapide, j'ai trouvé les pilotes 32 bits de Nvidia sous /usr/lib32. J'ai ajouté ce chemin à un fichier sous /etc/ld.so.conf.d/ (tout fichier fera l'affaire, vous pouvez même créer un nouveau fichier) et j'ai lancé Sudo ldconfig. Mon cache ressemble maintenant à ceci:

$ ldconfig -p | grep libGL.so
    libGL.so.1 (libc6,x86-64) => /usr/lib/libGL.so.1
    libGL.so.1 (libc6) => /usr/lib32/libGL.so.1
    libGL.so (libc6,x86-64) => /usr/lib/libGL.so
    libGL.so (libc6) => /usr/lib32/libGL.so

Et Steam fonctionne parfaitement!

2
Hubro

Codemonkey Correct. Tout ce que vous avez à faire est d’ajouter le pilote nvidia 32 bits et de supprimer le pilote mesa.

cd /etc/ld.so.conf.d/

ls

trouver un nom de fichier avec "i386"

le mien est "i386-linux-gnu_GL.conf"

alors j'écris,

Sudo gedit i386-linux-gnu_GL.conf 

puis ajoutez le chemin du pilote 32 bits en utilisant gedit.
est "/ usr/lib32 /".

Si vous ne trouvez pas votre emplacement de pilote 32 bits, il suffit de le rechercher.

Sauver. Terminal ouvert et tapez:

Sudo ldconfig

Mon Half-Life2 fonctionne parfaitement après cela. :RÉ

0
Haikalx