행동:
./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
'건축 컴퓨터 비전 > ORB-SLAM3' 카테고리의 다른 글
c++ gdb 디버깅중 vector size가 음수인 문제(c++ gdb vector size minus) (0) | 2022.07.17 |
---|---|
ORB SLAM Custom data, debugging (0) | 2022.07.15 |
ORB-SLAM3 카메라 캘리브레이션2 (0) | 2022.07.08 |
ORB-SLAM3 카메라 캘리브레이션 (0) | 2022.07.06 |
ORB-SLAM3 설치(20.04) (0) | 2022.06.16 |