OpenGL 가속 라이브러리(libGL 및 libGLU)를 구축하고 이를 특정 디렉토리에 저장했습니다 . 또한 OpenGL의 소프트웨어 /usr/lib/mali
구현이 /usr/lib/arm-linux-gnueabihf
./etc/ld.so.conf
/usr/lib/mali
ldconfig
모든 라이브러리 찾기:
$ sudo ldconfig -v
/usr/lib/mali:
libGLU.so.1 -> libGLU.so.1
libGL.so.1.2.0 -> libGL.so.1
/usr/lib/arm-linux-gnueabihf:
libGL.so.1 -> libGL.so.1.5.08005
libGLU.so.1 -> libGLU.so.1.3.08005
이상한 부분은 ldconfig
심볼릭 링크가 생성되었지만 libGL.so.1.2.0
에 libGLU
대한 출력이 ldd
더 이상하다는 것입니다.
ldd `which glxgears`
libGLU.so.1 => /usr/lib/mali/libGLU.so.1 (0xb6e4a000)
libGL.so.1 => /usr/lib/arm-linux-gnueabihf/libGL.so.1 (0xb6bb5000)
libGL.so.1.2.0 => /usr/lib/mali/libGL.so.1.2.0 (0xb67f1000)
출력은 소프트웨어 구현을 유지 libGLU
하면서 파일이 하드웨어 가속 디렉터리에서 가져온 것임을 나타냅니다. 또한 어떤 이유로 로드되고 있습니다. 내가 결국 실행한 것은 소프트웨어 구현이었습니다 .libGL
libGL.so.1.2.0
glxgears
무슨 일인지 설명해 줄 수 있는 사람 있나요? 소프트웨어 라이브러리 /usr/lib/arm-linux-gnueabihf/
(실제로 패키지 종속성)를 제거하거나 덮어쓰지 않고 기본적으로 하드웨어 가속 라이브러리를 로드하려면 어떻게 해야 합니까 ?
PS : /usr/lib/mali/
.LD_LIBRARY_PATH
답변1
문제는 실제로 내 Makefile 설정에 있습니다. 라이브러리를 검사한 결과 objdump
근본 원인이 밝혀졌습니다.
$ objdump -p libGL.so.1 |grep SONAME
SONAME libGL.so.1.2.0
ldd
첫 번째 것은 내가 가져온 것이고 두 번째는 하드웨어 가속 버전에 대해 구축되었으므로 해당 soname 을 알고 있기 때문에 표시 libGL.so.1
됩니다 .libGL.so.1.2.0
glxgears
libGLU
libGL
libGL.so.1.2.0
해결 방법은 soname을 -soname,libGL.so.1
.