libstdc++.so.6: version `GLIBCXX_3.4.29' not found
libstdc++.so.6: version `GLIBCXX_3.4.29' not found
libstdc++.so.6: version `GLIBCXX_3.4.29' not found
코드를 돌리는 중 libstdc++ not found 에러가 떴다
해결할 수 있는 방법은 크게 두 가지 있다
해결1: 패키지 업그레이드
패키지 업데이트
보통 이 에러가 나는 이유는 패키지가 최신 버전이 아니라서다
pip install -U --force-reinstall scipy
pip install --upgrade pandas
순서대로 실행해보고 안되면 pip 자체를 업그레이드 하는 등의 조치를 취해야 한다.
ImportError: /lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /home/{user}/.conda/envs/{envname}/lib/python3.8/site-packages/kiwisolver/_cext.cpython-38-x86_64-linux-gnu.so)
이처럼 특정 패키지에서 찾지 못한다고 한다면 이 패키지를 pip install -U 를 계속 해주면 된다.
pip install -U kiwisolver
pip install -U kiwisolver
위 에러 메시지를 보면 kiwisolver 패키지에서 에러가 났으므로, pip install -U kiwisolver를 해준다.
해결2: 하드하게 파일 옮기기
패키지를 업그레이드 해도 에러가 난다면, 경로에 맞게 파일을 옮겨줘야 한다
1. 파일 확인하기
strings /home/{user}/.conda/envs/{envname}/lib/libstdc++.so.6 | grep GLIBCXX
strings /home/{user}/.conda/envs/{envname}/lib/libstdc++.so.6 | grep GLIBCXX
여기서 ~ 경로에 맞춰 user를 바꾸고 실행하고 있는 conda env name에 맞춰 envname을 바꿔 명령어를 친다.
그러면 conda env에 못찾아서 오류가 났던 파일 GLIBCXX_3.4.29 가 잘 있는지 우선 확인한다.
2. 에러나는 경로에 있는 파일은 지우
rm /lib/x86_64-linux-gnu/libstdc++.so.6
rm /lib/x86_64-linux-gnu/libstdc++.so.6
에러가 나고 있는 libstdc++.so.6 파일을 지운다. 여기 경로는 conda가 아니라 /lib에 있는 파일이다.
3. 복사하거나 link로 연결하기
cp /home/{user}/.conda/envs/{envname}/lib/libstdc++.so.6 /lib/x86_64-linux-gnu
cp /home/{user}/.conda/envs/{envname}/lib/libstdc++.so.6 /lib/x86_64-linux-gnu
아까 envs 밑에 있던 파일을 lib/x86~ 경로로 옮겨준다.
복사하지 않고 ln -s 로 심볼릭 링크를 거는 방법도 있다.
두번째 방법은 /lib을 건드리는 것이기 때문에 추천하지 않고,
되도록 패키지를 업그레이드해서 해결하는 것이 좋다
Reference
https://github.com/pybind/pybind11/discussions/3453
libstdc++.so.6: version `GLIBCXX_3.4.29' not found · pybind pybind11 · Discussion #3453
I run this in pybind11 mkdir build cd build cmake .. make check -j 4 got ERROR: ...... Traceback (most recent call last): File "/home/shizuku/code/python/pybind11/tests/test_cmake_build/subdirector...
github.com

끝.