我在安装完opencv后,进入python环境,执行import cv2是报错:
(base) root@myd-lr3576x-debian:~# python Python 3.12.2 | packaged by conda-forge | (main, Feb 16 2024, 20:38:53) [GCC 12.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import cv2 Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: /lib/aarch64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.32' not found (required by /root/miniconda3/lib/python3.12/site-packages/../../././libtbb.so.12)
经查找是libstdc++.so.6不支持GLIBCXX_3.4.32版本号。
【问题查找】
使用grep GLIBCXX查看这个文件支持版本号:
(base) root@myd-lr3576x-debian:~# strings /lib/aarch64-linux-gnu/libstdc++.so.6 | grep GLIBCXX GLIBCXX_3.4 GLIBCXX_3.4.1 GLIBCXX_3.4.2 GLIBCXX_3.4.3 GLIBCXX_3.4.4 GLIBCXX_3.4.5 GLIBCXX_3.4.6 GLIBCXX_3.4.7 GLIBCXX_3.4.8 GLIBCXX_3.4.9 GLIBCXX_3.4.10 GLIBCXX_3.4.11 GLIBCXX_3.4.12 GLIBCXX_3.4.13 GLIBCXX_3.4.14 GLIBCXX_3.4.15 GLIBCXX_3.4.16 GLIBCXX_3.4.17 GLIBCXX_3.4.18 GLIBCXX_3.4.19 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 GLIBCXX_3.4.30 GLIBCXX_DEBUG_MESSAGE_LENGTH
可以看出他最高只支持GLIBCXX_3.4.30,没有支持3.4.32,所以出问题了。
【解决办法】
1、查找一下本机看还有基他的libstdc++.so.6文件没有。
(base) root@myd-lr3576x-debian:~# find / -name "libstdc++.so.6" /usr/lib/aarch64-linux-gnu/libstdc++.so.6 /root/miniconda3/pkgs/libstdcxx-ng-11.2.0-h1234567_1/lib/libstdc++.so.6 /root/miniconda3/pkgs/libstdcxx-14.2.0-h3f4de04_1/lib/libstdc++.so.6
找到其他的目录还有两个一个样的文件,再查看其的文件支持版本的情况,发现有一个是支持的:
(base) root@myd-lr3576x-debian:~# strings /root/miniconda3/pkgs/libstdcxx-14.2.0-h3f4de04_1/lib/libstdc++.so.6 | grep GLIBCXX GLIBCXX_3.4 GLIBCXX_3.4.1 GLIBCXX_3.4.2 GLIBCXX_3.4.3 GLIBCXX_3.4.4 GLIBCXX_3.4.5 GLIBCXX_3.4.6 GLIBCXX_3.4.7 GLIBCXX_3.4.8 GLIBCXX_3.4.9 GLIBCXX_3.4.10 GLIBCXX_3.4.11 GLIBCXX_3.4.12 GLIBCXX_3.4.13 GLIBCXX_3.4.14 GLIBCXX_3.4.15 GLIBCXX_3.4.16 GLIBCXX_3.4.17 GLIBCXX_3.4.18 GLIBCXX_3.4.19 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 GLIBCXX_3.4.30 GLIBCXX_3.4.31 GLIBCXX_3.4.32 GLIBCXX_3.4.33 GLIBCXX_TUNABLES
将这个支持的文件覆盖原来的文件:
(base) root@myd-lr3576x-debian:~# cp /root/miniconda3/pkgs/libstdcxx-14.2.0-h3f4de04_1/lib/libstdc++.so.6 /usr/lib/x86_64-linux-gnu/
【验证】
再次进入python环境,导入模块,并打印版本号:
(base) root@myd-lr3576x-debian:~# python Python 3.12.2 | packaged by conda-forge | (main, Feb 16 2024, 20:38:53) [GCC 12.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import cv2 >>> print(cv2.__version__) 4.10.0
成功解决问题。