libGl, fbConfigs에 문제가 있습니까?


38

SFML 프로젝트를 컴파일 할 때 문제가 있습니다 (그래픽이 표시되지 않음).

libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast

이 자습서를 통해 nvidia-drivers를 간단히 다시 설치하면이 오류를 해결할 수 있습니다. https://askubuntu.com/a/451248/341889

..하지만 새 업데이트를받을 때-이 오류가 반환됩니다. (어떻게해야합니까? 해결책이 아닙니다-시스템 업데이트를 사용하지 마십시오 ...

PS와 예, NVIDIA 드라이버를 설치 한 후 모든 변경 사항을 저장했습니다


1
mesa libGL.so:을 동적으로로드하는 OpenGL 실행 파일을 시작하려고하면이 문제가 발생합니다 LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/mesa ./glprogram. 기본적으로 내 우분투 16.04는 사용 /usr/lib/nvidia-361/libGL.so하기 때문에 /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf모두 잘 작동합니다.
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

답변:


29

swrast것은 소프트웨어 렌더러입니다. 이는 그래픽 카드의 하드웨어 드라이버를 찾지 못했음을 의미합니다. 많은 libGL 라이브러리가 설치되어 있으며 해당 라이브러리에 대한 기호 링크가 많이 있습니다. 이것을 쉘에서 실행하려면 다음을 수행하십시오.

find /usr -iname "*libGL.so*" -exec ls -l -- {} + 

이제 문제의 가능한 원인은 그래픽 드라이버를 설치하면 때때로 이러한 심볼릭 링크가 손상되기 때문입니다. (특히 /usr/local/lib/libGL.so.1.2.0잘못된 lib 또는 잘못된 링크에 대한 sym 링크 일 수 있음).

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

그러나 여러분에게 적합한 OpenGL lib (첫 번째 find 명령에 나열되어 있음)를 가리켜 야합니다.

요약 : (독점) 그래픽 드라이버를 설치하면 OpenGL 라이브러리에 사용되는 심볼릭 링크가 손상 될 수 있습니다. 이 문제를 해결하려면 심볼릭 링크를 수동으로 수정하십시오 ( /usr/local/lib/libGL.so.1.2.0먼저 수정 ).


이 문제는 오류 메시지를 이해하는 데 도움이되었지만 수정하지는 못했습니다. "nvidia 드라이버 재설치"답변이 실제로 문제를 해결했기 때문에 좋은 보완책이었습니다.
henko

@henko yes nvidia 드라이버 재설치가 가장 빠르고 쉬운 방법입니다. 드라이버를 다시 설치해도 문제가 해결되지 않아 손이 더러워 져야하는 경우이 방법으로 넘어가십시오.
demented hedgehog

6
"거의 확실히 /usr/local/lib/libGL.so.1.2.0"을 제외한 모든 부분을 이해했습니다. 내 "libGL : OpenDriver : trying /usr/lib/x86_64-linux-gnu/dri/tls/swrast_dri.so libGL : OpenDriver : trying /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so"및 모두 표시 이 파일은 내 시스템에 존재합니다.
Samuel Li

1
설명해 주셔서 다시 한 번 감사드립니다. 문제에 대해 더 잘 이해합니다. 또한 내 경우 에는 우분투 swrast.so에 확인 된 버그 가 있으며 사람들이 이를 논의 하고 있음을 지적하고 싶습니다 .
Samuel Li

1
감사합니다 @dementedhedgehog이 글은 훌륭하게 표현 된 글로 Fedora-25에서 문제를 해결하는 데 도움이되었습니다. = :). 투표권이 있습니다.
NYCeyes

5

nvidia-340드라이버와 함께 Ubuntu 16.10에서 동일한 문제가 발생했지만 여기에서 해결 된 솔루션은 없습니다.

32 비트 라이브러리가 라이브러리 경로에 없었습니다.

이 라이너는 나를 위해 일했습니다.

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib32/nvidia-340"

4

nVidia 드라이버를 가리 키기 위해 올바른 symlink를 얻는 데 문제가 있었고 다른 방법을 찾았습니다.

여기에 설명되어 있습니다 .

또한 최신 버전 인 349.16에서 사용할 수있는 PPA를 통해 nVidia 드라이버를 설치하는 방법에 대해 설명합니다.

먼저 터미널 창 ( Ctrl+ ALT+ T) 을 열고 다음 을 입력하여 현재 설치된 모든 nVidia 드라이버를 제거하십시오.

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 메가 이상의 시스템 업데이트를 한 후에도 여전히 작동했습니다.


2
드라이버를 설치 한 후 xorg-edgers ppa를 두지 않는 것이 좋습니다. 불안정한 패키지가 많이 업데이트됩니다.
Pilot6

nvidia *를 제거하면 이미이 문제가 해결되었습니다!
xtofl

3

Adrian의 답변에 대한 대안을 제공하려면 PPA에있는 드라이버 대신 NVIDIA에서 직접 제공 한 독점 드라이버를 사용하려는 경우 최신 독점 드라이버를 설치 (또는 내 경우에는 다시 설치)하면 swrast 오류를 제거 할 수 있습니다.

NVIDIA 드라이버가없는 경우 NVIDIA 웹 사이트 에서 드라이버를 다운로드하십시오 . 그런 다음 tty ( ctrl+ alt+ F1)로 전환하고 로그인 관리자를 끕니다.

lightdm을 사용하는 경우 $ sudo service lightdm stop

gdm을 사용하는 경우 $ sudo service gdm stop

설치 스크립트로 이동하여 실행 한 후 프롬프트를 따르십시오. 사전 설치 스크립트가 실패해도 걱정하지 마십시오. DKMS 및 32 비트 호환성 라이브러리 등록을 항상 수락합니다. 드라이버가 설치된 후 컴퓨터를 다시 시작하십시오.

$ sudo reboot

이전 NVIDIA 드라이버의 설치 ​​스크립트가 이미있는 경우 위에서 언급 한대로 "--update"옵션을 사용하여 NVIDIA 드라이버 설치 스크립트를 실행하십시오.

$ sudo ./NVIDIA-Linux-x86_64-***.**.run --update

그러면 최신 버전의 드라이버가 제공됩니다.

이렇게하면 내 libGL error: failed to load driver: swrast오류가 해결되었습니다.


3

우분투 18에서도 같은 문제가 발생했습니다. 이것은 기본적으로 32 비트 앱에서만 발생했습니다. 내 아이디어는 내 / usr / lib / i386-linux-gnu / 폴더가 의심스럽게 비어 32bit nvidia를 설치하는 것이 었습니다.

몇 번의 시도 끝에 증기와 와인이 시작되지 않는 문제가 해결되었습니다.

sudo apt install libnvidia-gl-418:i386

(그리고 당신이 가지고있는 버전으로 418을 변경하십시오)

응용 프로그램이 설치 중 종속성 누락에 대해 불평하지 않았다는 점에 흥미가 있습니다.


이것은 적어도 질문과 관련된 내 문제 중 하나를 해결 한 것 같습니다 ...
앤드류

32 비트가 이유 일 수 있습니다. 다른 프로그램은 제대로 작동하지만 64 비트 일 수 있습니다. 그럼에도 불구하고, 이것은 잘 작동합니다 (버전을 충돌시켜야했습니다)
Zoe

2

나는 이것이 왜 나에게 도움이되는지 잘 모르겠지만 인정했다. 이 경우에는 다음과 같이 새 항목을 추가하여 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

같은 항목을 세 번 반복해서 사용하지만 중복되지 않은 이유는 무엇입니까?


Ubunu 17.04에서 나를 위해 일합니다. 참고 사항-경로는 / usr / lib / nvidia-xxx입니다. 여기서 xxx는 드라이버 번호이므로 해당 명령을 적용하십시오.
user2082382

2

다음 apt은 저에게 도움 이되는 유일한 솔루션입니다 ld.so.conf.d.

apt install --reinstall libgl1-mesa-glx:i386
apt install mesa-utils nvidia-driver nvidia-driver-libs-i386

1

나는이 줄을 사용한다.

 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

1
사람들은 이것이 의미하는 바를 따라야합니까?
앤드류

나를 위해 작동합니다, 감사합니다!
Hett

0

이것을 실행하십시오 :

sudo apt-get install libnvidia-gl-(the version of your driver):i386

드라이버 버전은 NVIDIA 설정에 표시됩니다.


-3

Macbook Pro에서 Ubuntu VM으로 ssh 할 때이 이상한 문제에 직면했지만 Ubuntu 16.04에 아래 Nvidia 드라이버를 설치하면 문제가 해결되었습니다. 이것이 효과가 있기를 바랍니다.

sudo apt-get 설치 nvidia-331


1
VM 게스트 시스템에 Nvidia GPU 드라이버를 설치하는 이유는 무엇입니까? Ó_ò
David Foerster

공감 비가 적절하지 않습니다. @DavidFoerster는 GPU 하드웨어를 VM에 전달하지 않는 한 VM에 GPU 드라이버를 설치하는 것이 의미가 없다는 점에서 옳습니다. 그러나 : SSH를 통해 X를 실행하고 있으며 동일한 문제에 직면하고 있습니다. 원격 시스템 (VM)에서 X 응용 프로그램을 시작하면 거의 항상 OP 질문에 언급 된 오류 메시지가 나타납니다. 난 아직 그 문제에 대한 해결책을 찾을 수없는,하지만 경우 원격 VM에 GPU 드라이버를 설치하는 것이 해결책이 될, 난 그냥 난 (오류가 사라 있는지 확인하기 위해 관계없이 의미가 있는지 여부, 그것을 할 것 현재 무시하고 있습니다).
Binarus
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.