J'ai des problèmes pour compiler le projet SFML (je ne vois aucun graphique):
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
Cette erreur peut être résolue en réinstallant nvidia-drivers à travers ce tutoriel: https://askubuntu.com/a/451248/341889
..mais quand j'obtiens de nouvelles mises à jour - cette erreur revient (que dois-je faire? Ce n'est pas la solution - n'utilisez pas la mise à jour du système ...
P.S. et oui, j'ai enregistré toutes les modifications après l'installation de nvidia-drivers
swrast
est le moteur de rendu du logiciel. Cela signifie que le pilote de votre carte graphique n’est pas trouvé. Un ensemble de bibliothèques libGL sont installées et de nombreux liens symboliques vers ces bibliothèques. Pour les voir, lancez ceci depuis le shell:
find /usr -iname "*libGL.so*" -exec ls -l -- {} +
Maintenant, la cause probable de votre problème est que l’installation de pilotes graphiques casse parfois ces liens symboliques. (Plus précisément, /usr/local/lib/libGL.so.1.2.0
sera probablement soit la mauvaise bibliothèque, soit un lien sym vers le mauvais lien).
Pour savoir quelle bibliothèque les programmes OpenGL essaient d’exécuter, vous pouvez activer un peu de verbosité et exécuter un simple programme OpenGL. Vous pouvez le vérifier en utilisant le programme de test OpenGL standard:
LIBGL_DEBUG=verbose glxgears
Espérons que cela échouera de la même manière que SFML. Avec LIBGL_DEBUG
, il devrait vous indiquer la bibliothèque OpenGL qu’elle tente de charger. De plus, la bibliothèque qu’elle essaiera de charger portera presque certainement /usr/local/lib/libGL.so.1.2.0
(Edit: c’était la bibliothèque standard OpenGL sur ma machine au moment où j’ai répondu à cette question. Il se peut qu’il en soit une autre version sur votre machine maintenant).
Donc, la solution (dans ce cas) est de s'assurer que /usr/local/lib/libGL.so.1.2.0
est un lien symbolique pointant vers la bonne bibliothèque OpenGL. Dans mon cas, j'ai le pilote Nvidia 3.40 alors j'ai couru:
ln -s /usr/lib/nvidia-340/libGL.so.1 /usr/local/lib/libGL.so.1.2.0
Mais vous voudrez le pointer sur la bibliothèque OpenGL qui vous convient (listée dans la première commande find).
En résumé: l'installation de pilotes graphiques (propriétaires) peut rompre les liens symboliques utilisés pour les bibliothèques OpenGL. Pour résoudre ce problème, corrigez manuellement les liens symboliques (corrigez d'abord /usr/local/lib/libGL.so.1.2.0
).
J'ai eu le même problème sur Ubuntu 16.10 avec les pilotes nvidia-340
et aucune des solutions ici ne fonctionnait pour moi.
Il s'avère que les bibliothèques 32 bits n'étaient pas sur le chemin de la bibliothèque.
Ce paquebot a fonctionné pour moi:
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib32/nvidia-340"
J'avais des problèmes pour faire pointer le lien symbolique correct vers le pilote nVidia et j'ai trouvé un autre moyen qui fonctionne pour moi.
Il est décrit ici .
Et il explique comment installer le pilote nVidia via PPA disponible pour 349.16, la dernière version.
Commencez par désinstaller les pilotes nVidia actuellement installés en ouvrant une fenêtre de terminal (Ctrl + ALT + T) et en tapant
Sudo apt-get remove nvidia*
Redémarrez votre système
Puis ouvrez un autre terminal et tapez ce qui suit
Sudo add-apt-repository ppa:xorg-edgers/ppa
Sudo apt-get update
Sudo apt-get install nvidia-349 nvidia-settings
Sudo add-apt-repository -r ppa:xorg-edgers/ppa
Puis redémarrez à nouveau
Je l'ai essayé après m'être égaré avec les liens symboliques et Steam fonctionnait correctement immédiatement après l'installation du pilote. Encore une fois, il fonctionnait encore après avoir eu plus de 400 Mo de mises à jour du système.
Pour fournir une alternative à la réponse d'Adrian: si vous préférez utiliser des pilotes propriétaires provenant directement de NVIDIA plutôt que ceux trouvés dans un PPA, l'installation (ou dans mon cas, la réinstallation) du dernier pilote propriétaire peut aider à éliminer l'erreur swrast.
Si vous ne possédez pas encore le pilote NVIDIA, téléchargez-le à partir de site Web de NVIDIA . Ensuite, passez à tty (ctrl
name __ + alt
name __ + F1
) et désactivez votre gestionnaire de connexion:
Si vous utilisez lightdm, $ Sudo service lightdm stop
Si vous utilisez gdm, $ Sudo service gdm stop
Naviguez jusqu'au script d'installation, exécutez-le et suivez les instructions. Ne vous inquiétez pas si le script de pré-installation échoue. J'accepte toujours d'enregistrer DKMS et les bibliothèques de compatibilité 32 bits. Une fois le pilote installé, redémarrez votre ordinateur:
$ Sudo reboot
Si vous avez déjà un script d'installation à partir d'un ancien pilote NVIDIA, exécutez simplement le script d'installation du pilote NVIDIA comme décrit ci-dessus, mais avec l'option "--update":
$ Sudo ./NVIDIA-Linux-x86_64-***.**.run --update
Cela vous donnera la version la plus récente du pilote.
Cela corrigeait mon erreur libGL error: failed to load driver: swrast
.
J'ai eu le même problème sur Ubuntu 18. Cela s'est produit essentiellement avec les applications 32 bits. Donc, mon idée était d'installer quelque chose de nvidia 32 bits, car mon dossier/usr/lib/i386-linux-gnu/était étrangement vide.
Après très peu d'essais, cela a résolu mon problème de vapeur et de vin qui ne démarre pas:
Sudo apt install libnvidia-gl-418:i386
(et remplacez 418 par votre version)
Il est intéressant de noter que les applications ne se sont pas plaintes de dépendances manquantes lors de l’installation.
Voici une solution _apt
- only qui a fonctionné pour moi, sans symlinking ni bidouillage avec ld.so.conf.d
:
apt install --reinstall libgl1-mesa-glx:i386
apt install mesa-utils nvidia-driver nvidia-driver-libs-i386
Je dois admettre que je ne sais pas pourquoi cela fonctionne pour moi, mais ça a été le cas. Dans ce cas particulier, "réparer" les entrées ld.so.conf.d en ajoutant une nouvelle entrée comme celle-ci fonctionne:
Sudo ln -s /usr/lib/nvidia-381/ld.so.conf /etc/ld.so.conf.d/nvidia64.conf
Sudo ldconfig
Cela a du sens, jusqu'à ce que vous exécutiez le find
suivant:
$ find -L /etc/ld.so.conf.d -type f | xargs grep -i nvidia
/etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf:/usr/lib/nvidia-381
/etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf:/usr/lib32/nvidia-381
/etc/ld.so.conf.d/x86_64-linux-gnu_EGL.conf:/usr/lib/nvidia-381
/etc/ld.so.conf.d/x86_64-linux-gnu_EGL.conf:/usr/lib32/nvidia-381
/etc/ld.so.conf.d/nvidia64.conf:/usr/lib/nvidia-381
/etc/ld.so.conf.d/nvidia64.conf:/usr/lib32/nvidia-381
Pourquoi avoir les mêmes entrées en triple, mais pas en double, je n'en ai aucune idée!
Je viens d'utiliser cette ligne:
Sudo rm /usr/lib/i386-linux-gnu/libGL.so.1
et il fonctionne.
Parce que je vois une telle entrée quand j'exécute Sudo ldconfig -p | grep -i gl.so
:
libwayland-egl.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libwayland-egl.so.1
libcogl.so.20 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libcogl.so.20
libOpenGL.so.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libOpenGL.so.0
libOpenGL.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libOpenGL.so
libGL.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libGL.so.1
libGL.so.1 (libc6) => /usr/lib/i386-linux-gnu/libGL.so.1
libGL.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libGL.so
libEGL.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libEGL.so.1
libEGL.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libEGL.so
Il suffit de lancer ceci:
Sudo apt-get install libnvidia-gl-(the version of your driver):i386
La version de votre pilote est affichée dans nvidia-settings.