건축 컴퓨터 비전/ORB-SLAM3

slam 실행 전 libpango_display.so: cannot open shared object file: No such file or directory

시도하고 시도 2022. 8. 5. 17:41

행동:

./Monocular/mono_euroc ../Vocabulary/ORBvoc.txt ./Monocular/EuRoC.yaml ../DataSets/EuRoC/MH01/ ./Monocular/EuRoC_TimeStamps/MH01.txt

예상된 결과: ORB3_SLAM Example 데이터 실행

 

결과:

./Monocular/mono_euroc: error while loading shared libraries: libpango_display.so: cannot open shared object file: No such file or directory

 

원인:

(base) ict-526@ict526-MS-7D32:~$ ldd ./src/ORB_SLAM3/Examples/Monocula/mono_euroc | grep "not found"
libpango_display.so => not found
libpango_opengl.so => not found
libpango_display.so => not found
libpango_vars.so => not found
libpango_opengl.so => not found
libpango_core.so => not found

 

ldd (동적 라이브러리 의존성 패키지를 검색하는 명령어)로 mono_euroc 실행파일을 지정해 검색하면, not found 된 패키지들이 보인다. pangolin을 dso slam에서 사용하려고 dso_slam 폴더 내에 재설치를 했는데, 원래 설치했던 Pangolin/build 폴더에서 동적 라이브러리 파일들을 찾을 수 가 없었다. 원래 제대로 안 깔았거나, 중간에 임의로 삭제했을 수도 있다. 예전에는 잘 실행됐기 때문이다.

 

~/src/ORB_SLAM3/Examples$ cd ~/src/Pangolin/build && ls
CMakeCache.txt              CMakeFiles             CPackConfig.cmake        examples  src
CMakeDoxyfile.in            cmake_install.cmake    CPackSourceConfig.cmake  external  test
CMakeDoxygenDefaults.cmake  cmake_uninstall.cmake  doc                      Makefile  tools

 

해결책:

find / -name "libpango_display.so"

결과: /home/ict-526/src/dso/src/IOWrapper/Pangolin1/build/libpango_display.so

이제 해당 경로를 LD_LIBRARY_PATH 로 추가하면 된다.

 

vim ~/.bashrc

하고 문서의 적절한 곳에 아래 문장을 추가해준다.

export LD_LIBRARY_PATH=find 명령어 결과 경로....

나의 경우, export LD_LIBRARY_PATH=/usr/local/cuda-11.7/lib64:/home/ict-526/src/dso/src/IOWrapper/Pangolin1/build/

로, 기존 LD_LIBRARY_PATH 추가하는 코드에다가 추가해주었다.

그리고 변화한 ~/.bashrc를 소스해준다.

. ~/.bashrc

 

동일한 터미널이나 새 터미널에서 ORB SLAM 예제를 실행하면, 잘 되는 것을 확인하고 문제를 해결했다고 판단했다.

 

참고 사이트:

https://www.baeldung.com/linux/solve-shared-object-error