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
먼저 수정 ).
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
모두 잘 작동합니다.