발생한 오류
libstdc++.so.6 파일을 찾을 수 없다는 것을 의미하며, 주로 C++ 프로그램을 실행할 때 필요한 C++ 표준 라이브러리 파일이 시스템에 없거나 설치 경로에 없을 때 발생한다.
본인의 경우에는 우분투 환경에서 어떤 패키지나 라이브러리를 설치하려고 해도 아래 오류가 계속 출력되는 현상이 발생하였었다.
Libstdc++.so.6: cannot open shared object file: No such file or directory
(미)해결 방법1
스택오버플로우에서 좋아요를 많이 받은 방법이다. 많은 사람들이 아래 명령어로 해결을 한 것 같은데 본인의 경우에는 lib32stdc++6 설치를 진행할 때에도 오류가 계속 출력되어 결국 다른 방법으로 해결하였다.
apt-get install lib32stdc++6
해결 방법2
결국 libstdc++.so.6를 복구하는 방법을 시도하여서 해결하였다.
라이브러리 위치 확인
필자의 경우에는 libstdc++.so.6가 아래 경로에 위치하였다.
ls /usr/lib/x86_64-linux-gnu/libstdc++.so.6
파일 권한 확인
다음 명령문으로 libstdc++.so.6가 libstdc++.so.6.0.xx으로 연결된 파일이 존재하는지 확인한다.
ls -l /usr/lib/x86_64-linux-gnu/libstdc++.so.6
필자는 위 명령문에 대한 출력이 다음과 같이 나왔었는데 다음 경로는 일반적인 라이브러리 경로가 아니기 때문에 경로를 해제하고 다시 설정해 주는 작업이 필요했었다.
~~ -> /home/runner/.local/share/r-miniconda/pkgs/libstdcxx-ng-12.1.0-ha89aaad_16/lib/libstdc++/so.6.0.30
현재 심볼릭 링크 확인 및 삭제
sudo rm /usr/lib/x86_64-linux-gnu/libstdc++.so.6
올바른 경로로 심볼릭 링크 생성
아래 명령문으로 현재 시스템에서 libstdc++.so.6 파일이 있는지 확인한다.
libstdc++.so.6.0.30 또는 libstdc++.so.6.0.28와 같은 파일이 존재해야 한다.
ls /usr/lib/x86_64-linux-gnu/libstdc++.so.6*
파일이 존재하는 경우, 해당 파일을 가리키도록 새로운 심볼릭 링크를 생성한다.
xx는 실제 존재하는 파일로 작성해 주면 된다.
sudo ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.xx /usr/lib/x86_64-linux-gnu/libstdc++.so.6
복구 후 재부팅
재부팅이 끝나면 더 이상 오류가 발생하지 않고 제대로 설치되는 것을 확인할 수 있다.
sudo reboot
Reference