У меня есть проблемы когда SFML-проект компиляции (не см. диаграммы):
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
Эта ошибка может быть решена простыми драйверами Nvidia переустановки через это учебное руководство: https://askubuntu.com/a/451248/341889
.. но когда я получаю новые обновления - эта ошибка возвращается ;( Что я должен сделать? Это не решение - не, используют обновление системы...
P.S. и да, я сохранил все изменения после установки драйверов Nvidia
swrast
вещью является рендерер программного обеспечения. Это означает, что не находит драйвер оборудования для Вашей видеокарты. Существует набор libGL установленных библиотек и набор символьных ссылок на те библиотеки. Видеть, что они выполняют это от оболочки:
find /usr -iname "*libGL.so*" -exec ls -l -- {} +
Теперь вероятная причина Вашей проблемы состоит в том, что устанавливающие графические драйверы иногда разрывают эти символьные связи. (Конкретно /usr/local/lib/libGL.so.1.2.0
, вероятно, будет или неправильный lib или символьная ссылка на неправильную ссылку).
Для разработки, что библиотека программы OpenGL пытается выполнить, можно включить немного многословия и запустить простую программу OpenGL. Можно проверить это использование стандартной тестовой программы OpenGL:
LIBGL_DEBUG=verbose glxgears
, Надо надеяться, который перестанет работать таким же образом как SFML. С LIBGL_DEBUG
это должно сказать Вам, какую библиотеку OpenGL это пытается загрузить. Кроме того, lib, который это будет пытаться загрузить, почти наверняка будет /usr/local/lib/libGL.so.1.2.0
(Редактирование: Это было стандартной библиотекой OpenGL по моей машине в то время, когда я ответил на это. Это может быть некоторая другая версия на Вашей машине теперь).
, Таким образом, решение (в этом случае) состоит в том, чтобы удостовериться, что /usr/local/lib/libGL.so.1.2.0
символьная ссылка, указывающая на правильную библиотеку OpenGL. В моем случае у меня есть драйвер Nvidia 3.40, таким образом, я работал:
ln -s /usr/lib/nvidia-340/libGL.so.1 /usr/local/lib/libGL.so.1.2.0
, Но Вы захотите указать на него на lib OpenGL, который подходит для Вас (перечисленный в первой команде находки).
, Таким образом: установка (собственных) графических драйверов может разорвать символьные связи, используемые для OpenGL, освобождает. Для решения этой проблемы вручную фиксируют символьные ссылки (зафиксируйте /usr/local/lib/libGL.so.1.2.0
первый).
Для пропавших без вести swrast/fbConfig: sudo способный libdri2-1
установкиУ меня были проблемы, заставляя корректную символьную ссылку указать на драйвер Nvidia, и я нашел иначе что работы для меня.
Это обрисовано в общих чертах здесь .
И это перечисляет о том, как установить драйвер Nvidia через PPA, который доступен для 349,16, последняя версия.
Первое удаление любые драйверы Nvidia, в настоящее время устанавливаемые путем открытия окна терминала ( Ctrl + ALT + T ) и ввода
sudo apt-get remove nvidia*
, Перезагружают систему
Тогда открытый другой терминал и вводят следующий
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
Тогда перезагрузка снова
, я попробовал его после того, чтобы теряться с символьными ссылками, и пар сразу хорошо работал после установки драйвера и снова это все еще работало после того, как я имел 400 + megs системных обновлений.
У меня была та же проблема о Ubuntu 16.10 с эти nvidia-340
драйверы, и ни одно из решений здесь не работало на меня.
Оказывается, что 32-разрядные библиотеки не были на пути к библиотеке.
Этот лайнер работал на меня:
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib32/nvidia-340"
Обеспечить альтернативу ответу Adrian: если Вы предпочитаете использовать собственные драйверы, полученные непосредственно от NVIDIA вместо найденных в PPA, устанавливая (или в моем случае, переустанавливая), последний собственный драйвер может помочь устранить swrast ошибку.
, Если у Вас еще нет драйвера NVIDIA, загрузите драйвер от веб-сайт NVIDIA . Затем, переключитесь на tty (ctrl
+ alt
+ F1
) и выключите своего менеджера по входу в систему:
При использовании lightdm, $ sudo service lightdm stop
При использовании gdm, $ sudo service gdm stop
Перешли к сценарию установки и выполняют его и следуют за подсказками. Не волнуйтесь, перестал ли предварительно устанавливать сценарий работать. Я всегда принимаю регистрацию DKMS и 32-разрядные библиотеки совместимости. После того, как драйвер установлен, перезапустите свою машину:
$ sudo reboot
, Если у Вас уже есть сценарий установки от более старого драйвера NVIDIA, просто запустите скрипт установки драйвера NVIDIA как oulined выше, но с "-обновление" опция:
$ sudo ./NVIDIA-Linux-x86_64-***.**.run --update
Это получит Вас самая актуальная версия драйвера.
Выполнение этого зафиксировало мой libGL error: failed to load driver: swrast
ошибка.
Я должен признать, я не уверен, почему это работает на меня, но это сделало. В этом особенно работает случай, "устраняющий" ld.so.conf.d записи путем добавления новой записи как это:
sudo ln -s /usr/lib/nvidia-381/ld.so.conf /etc/ld.so.conf.d/nvidia64.conf
sudo ldconfig
Это имеет смысл, пока Вы не выполняете следующий find
:
$ 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
, Почему наличие тех же записей в трех экземплярах работает, но не в двойном экземпляре, я понятия не имею!
Вот apt
- только решение, которое работало на меня, никакой symlinking или слоняющийся без дела с ld.so.conf.d
:
apt install --reinstall libgl1-mesa-glx:i386
apt install mesa-utils nvidia-driver nvidia-driver-libs-i386
Я просто использую эту строку:
sudo rm /usr/lib/i386-linux-gnu/libGL.so.1
и это работает.
, поскольку я вижу такой вход, когда я выполняюсь 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
Получил ту же проблему на человечности 18. Это произошло в основном только с приложениями на 32 бита. Таким образом, моя идея состояла в том, чтобы установить Nvidia на 32 бита что-то как мой/usr/lib/i386-linux-gnu/, папка была подозрительно пуста.
После очень немногих попыток, это решило мою проблему с паром и вином, не запускающимся:
sudo apt install libnvidia-gl-418:i386
(и изменение 418 к тому, какой бы ни версия Вы имеете)
Интересный, что приложения не жаловались на недостающие зависимости во время установки.
Я сталкивался с этой странной проблемой когда я ssh к моему VM Ubuntu от моего MacBook Pro, но устанавливал ниже драйвера Nvidia на моей Ubuntu 16.04, устранил проблему. Надеюсь, что это работает на Вас.
sudo Кв. - получают nvidia-331
установкиПросто выполнение это:
sudo apt-get install libnvidia-gl-(the version of your driver):i386
версия Вашего драйвера, показал в настройках Nvidia.
В моем случае решение этой проблемы находилось в продолжении сообщения об ошибке
Парапредставление 5.7.0, сообщил мне что:
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
( 0.833s) [paraview] vtkOpenGLRenderWindow.c:748 ERR| vtkXOpenGLRenderWindow (0x5588ae6a2160): GLEW could not be initialized: Missing GL version
...
Segmentation fault
сообщение
GLEW could not be initialized: Missing GL version
было ключевым. Я выполняю 'glxgears', чтобы проверить, что графические библиотеки хорошо работали - см. также man glxgears
- показывающий эту анимацию:
Затем мое решение просто устанавливало переменную среды
LD_PRELOAD=/usr/lib/libGL.so
, Обращают внимание:
locate libGL.so
, я нахожу другого кандидата /usr/lib/i386-linux-gnu/libGL.so
. При установке этого, поскольку LD_PRELOAD, однако, не решил проблему; locate libGLEW.so
, я обязан https://github.com/openai/mujoco-py/issues/44 для подсказок
У меня периодически возникала эта проблема, когда каждый новый драйвер уничтожал пар. Теперь я использую паровой плоский пакет и не имею никаких проблем.
Похоже, установщик NVIDIA просто неправильно указывает расположение в некоторых дистрибутивах. Ubuntu 19.10 и возникли проблемы. Команда locate показала, что 32-битные библиотеки NVIDIA существуют, но не в нужном месте. Этот однострочник исправил это для меня.
sudo cp /usr/lib32/*nvidia* /usr/lib/i386-linux-gnu/
П.С. это будет работать только для 32-битных проблем.
Это исправило для меня: sudo apt-get install libnvidia-gl-390: i386