"공유 라이브러리를 로드하는 중 오류 발생: libgl.so.1" 수정 방법

"공유 라이브러리를 로드하는 중 오류 발생: libgl.so.1" 수정 방법

이 명령을 실행한 후dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P

smplayer,cairo-dock,unity-2d-shell 및 amdconfig를 여는 동안 문제가 발생했습니다. "공유 라이브러리를 로드하는 동안 오류가 발생했습니다. libGL.so.1: 공유 개체 파일을 열 수 없습니다. 해당 파일이나 디렉터리가 없습니다." 어쩌면 다른 응용 프로그램에서도 동일한 문제가 발생할 수 있습니다.

하지만 파일이 있어요

locate libGL.so.1  
/usr/lib/FGL.renamed.libGL.so.1.2
/usr/lib/libGL.so.1
/usr/lib/libGL.so.1.2
/usr/lib/i386-linux-gnu/libGL.so.1
/usr/lib/i386-linux-gnu/libGL.so.1.2
/usr/lib/i386-linux-gnu/fglrx/fglrx-libGL.so.1.2
/usr/lib/i386-linux-gnu/mesa/FGL.renamed.libGL.so.1.2
/usr/lib/x86_64-linux-gnu/mesa/FGL.renamed.libGL.so.1.2
/usr/lib32/libGL.so.1
/usr/lib32/libGL.so.1.2



ldd $(which unity-2d-shell)|grep libGL  
libGL.so.1 => not found        
ldd $(which mplayer)|grep not  
libGL.so.1 => not found

하지만

ldd $(which smplayer)|grep libGL  

아무것도 얻지 못했습니다.

답변1

@Braiam이 자리 잡았습니다. 또한 파일을 찾았다고 해서 해당 파일이 locate존재한다는 의미는 아닙니다. locate때때로 새로 고쳐지는 데이터베이스를 사용합니다. 실제 파일 시스템을 검색하지 않고 데이터베이스를 검색합니다. updatedb검색하기 전에 실행하거나 플래그를 사용하여 데이터베이스를 새로 고칠 수 있습니다 -e.

-e, --existing
     Print only entries that refer to files existing at the time locate is run.

예를 들어:

$ touch stupid_stupid_file.txt
$ locate stupid_stupid_file.txt   ## No results
$ sudo updatedb                   ## refresh database
$ locate stupid_stupid_file.txt
/home/terdon/stupid_stupid_file.txt  ## the file was found after updatedb
$ rm stupid_stupid_file.txt          ## delete the file
$ locate stupid_stupid_file.txt
/home/terdon/stupid_stupid_file.txt   ## the file is still in the database 
$ locate -e stupid_stupid_file.txt   ## the file is not found using -e

답변2

한 번에 여러 패키지를 제거할 때 일부 연결된 라이브러리가 손상되었기 때문일 수 있습니다. dpkg -l |grep ^rc|awk '{print $2}'무슨 일이 일어날지 알기 위해 미리 달려가야 합니다 . 다행히 이 문제는 sudo ldconfig. 이렇게 하면 연결된 라이브러리 캐시가 다시 생성되고 (희망적으로) 라이브러리가 수정됩니다.

물론, 실제로 라이브러리 /usr/lib/libGL.so.1가 설치되어 있는 경우에만 작동합니다.

ls -l /usr/lib/x86_64-linux-gnu/libGLU.so.1
lrwxrwxrwx 1 root root 15 sep 18 14:03 /usr/lib/x86_64-linux-gnu/libGLU.so.1 -> libGLU.so.1.3.1
dpkg -S libGL.so.1
libgl1-mesa-glx:i386: /usr/lib/i386-linux-gnu/mesa/libGL.so.1
libgl1-mesa-glx:amd64: /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1
libgl1-mesa-glx:i386: /usr/lib/i386-linux-gnu/mesa/libGL.so.1.2.0
libgl1-mesa-glx:amd64: /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0

(저는 64비트라서 차이가 납니다.)

관련 정보