libstdc++.so.6: version `GLIBCXX_3.4.22‘ not found 终极解决方法

首先先查看/usr/lib/aarch64-linux-gnu/libstdc++.so.6这个库的信息

strings /usr/lib/aarch64-linux-gnu/libstdc++.so.6 | grep GLIBCXX

如果找不着可以使用

sudo find / -name "libstdc++.so.6*"

结果如下:

/usr/lib/vmware-tools/lib32/libstdc++.so.6
/usr/lib/vmware-tools/lib32/libstdc++.so.6/libstdc++.so.6
/usr/lib/vmware-tools/lib64/libstdc++.so.6
/usr/lib/vmware-tools/lib64/libstdc++.so.6/libstdc++.so.6
/usr/lib/x86_64-linux-gnu/libstdc++.so.6
find: ‘/run/user/1000/gvfs’: Permission denied
/home/follow/vmware-tools-distrib/lib/lib32/libstdc++.so.6
/home/follow/vmware-tools-distrib/lib/lib32/libstdc++.so.6/libstdc++.so.6
/home/follow/vmware-tools-distrib/lib/lib64/libstdc++.so.6
/home/follow/vmware-tools-distrib/lib/lib64/libstdc++.so.6/libstdc++.so.6
/home/follow/anaconda3/lib/libstdc++.so.6
/home/follow/anaconda3/pkgs/libstdcxx-ng-9.1.0-hdf63c60_0/lib/libstdc++.so.6
/home/follow/anaconda3/pkgs/libstdcxx-ng-9.1.0-hdf63c60_0/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6

找到有GLIBCXX_3.4.21的库,ll查看它链接的具体库文件

root@ubuntu:~# ll /usr/lib/aarch64-linux-gnu/libstdc++.so.6
lrwxrwxrwx 1 root root 19 Jul  4  2016 /usr/lib/aarch64-linux-gnu/libstdc++.so.6 -> libstdc++.so.6.0.21

libstdc++.so.6.0.21这个版本不包含GLIBCXX_3.4.22,我们使用更高版本的libstdc++.so来解决这个问题。
比如我的是

/home/follow/anaconda3/envs/yolo/lib/libstdc++.so.6 -> libstdc++.so.6.0.26*

(这个都支持到GLIBCXX_3.4.22了),接着只要把这个库libstdc++.so.6.0.26拷贝到报错的路径/usr/lib/aarch64-linux-gnu/,然后删除/usr/lib/aarch64-linux-gnu/libstdc++.so.6这个软链接,重新再给建立一个链接到libstdc++.so.6.0.26这个库上。

sudo cp /opt/anaconda3/lib/libstdc++.so.6.0.26 /usr/lib/aarch64-linux-gnu
sudo rm /usr/lib/aarch64-linux-gnu/libstdc++.so.6
sudo ln -s /usr/lib/aarch64-linux-gnu/libstdc++.so.6.0.26 /usr/lib/aarch64-linux-gnu/libstdc++.so.6

ok了


版权声明:本文为cp562090732原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。