python train.py时报错:
ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /root/miniconda3/envs/yolo4/lib/python3.8/site-packages/google/protobuf/pyext/_message.cpython-38-x86_64-linux-gnu.so)
1、先查看有哪些版本
strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
............
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
GLIBCXX_3.4.25
GLIBCXX_3.4.26
GLIBCXX_3.4.27
GLIBCXX_3.4.28
GLIBCXX_DEBUG_MESSAGE_LENGTH
2、发现没有GLIBCXX_3.4.29版本,检索当前系统下所有libstdc++.so.6版本的文件
sudo find / -name "libstdc++.so.6*"
find: ‘/proc/810/map_files’: Permission denied
find: ‘/proc/859/map_files’: Permission denied
/root/miniconda3/envs/yolo4/lib/libstdc++.so.6
/root/miniconda3/envs/yolo4/lib/libstdc++.so.6.0.29
/root/miniconda3/lib/libstdc++.so.6
/root/miniconda3/lib/libstdc++.so.6.0.28
/root/miniconda3/pkgs/libstdcxx-ng-9.3.0-hd4cf53a_17/lib/libstdc++.so.6
/root/miniconda3/pkgs/libstdcxx-ng-9.3.0-hd4cf53a_17/lib/libstdc++.so.6.0.28
/root/miniconda3/pkgs/libstdcxx-ng-11.2.0-h1234567_1/lib/libstdc++.so.6.0.29
/root/miniconda3/pkgs/libstdcxx-ng-11.2.0-h1234567_1/lib/libstdc++.so.6
/usr/lib/x86_64-linux-gnu/libstdc++.so.6
/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25
/usr/share/gdb/auto-load/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25-gdb.py
3、挑选一个版本最高的文件再次进行查找
strings /root/miniconda3/envs/yolo4/lib/libstdc++.so.6.0.29 | grep GLIBC
............
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
GLIBCXX_3.4.25
GLIBCXX_3.4.26
GLIBCXX_3.4.27
GLIBCXX_3.4.28
GLIBCXX_3.4.29
GLIBC_2.2.5
GLIBC_2.3
GLIBC_2.14
GLIBC_2.6
GLIBC_2.4
GLIBC_2.16
GLIBC_2.17
GLIBC_2.3.2
GLIBCXX_DEBUG_MESSAGE_LENGTH
__strtof_l@GLIBC_2.2.5
symlink@GLIBC_2.2.5
_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
chdir@GLIBC_2.2.5
fileno@GLIBC_2.2.5
............
4、发现有GLIBCXX_3.4.29这个版本,在环境中添加:
export LD_LIBRARY_PATH=/root/miniconda3/envs/yolo4/lib
5、解决