文章目录
1 问题描述
在使用pip3 安装完tensorflow时并未发现任何错误,在测试的时候出现如下错误:
2 问题分析和解决
该问题出现在运行时,可能的原因是编译库的编译器和编译当前程序的编译器版本是不一样的,且当前程序的编译器的版本是比较低的,需要进行升级,即要更换可能由于当前库中的libstdc++.so.6文件。
3 解决办法
1)查看当前的GLIBC有哪些
strings /usr/lib/arm-linunx-gnueabihf/libstdc++.so.6 | grep GLIBC
终端打印为:
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_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH
可以发现在该路径下并没有GLIBCXX_3.4.22可用;
2)查看系统中有无其他路径有GLIBCXX_3.4.22
find / -name "libstdc++.so*"
终端打印为:
可见在本机上没有GLIBCXX_3.4.22可用。
3)下载适合本电脑版本的libstdc++.so.6.0.22(一定要匹配,切莫直接拷贝别人系统上的)
由于树莓派是armhf架构,故必须保证下载的libstdc++.so.6.0.22是适用于该版本*的,否则做多少工作都是无用功!
在这里ftp.de.debian.org/debian/pool/main/g/gcc-6/下载dbg ,且尾缀为armhf.deb的文件如下所示
4)解压缩,提取出libstdc++.so.6.0.22
首先解压libstdc++6-6-dbg_6.5.0-2_armhf.deb文件得到:
control.tar.xz data.tar.xz debian-binary #共3个文件
接着,解压data.tar.xz文件得到:
usr
进而依次进入如下目录
usr ----> lib ----> arm-linux-guneabihf ----> debug
可以发现在debug中有libstdc++.so.6.0.22
5)复制和创建libstdc++.so.6软连接
这里需要四步走:
1) 首先切换到libstdc++.so.6.0.22当前的目录执行:
cp libstdc++.so.6.0.22 /usr/lib/arm-linux-gnueabihf
2)切换到 /usr/lib/arm-linux-gnueabihf 目录下:
cd /usr/lib/arm-linux-gnueabihf
3) 删除原有的libstdc++.so.6
rm libstdc++.so.6
4) 建立软连接
sudo ln -s libstdc++.so.6.0.22 libstdc++.so.6
注:所谓软链接就是:“ln –s 源文件 目标文件”,只会在选定的位置上生成一个文件的镜像,不会占用磁盘空间,这里libstdc++.so.6类似于libstdc++.so.6.0.22的一个快捷方式(windows理解方式)。
6)再次测试
strings /usr/lib/arm-linunx-gnueabihf/libstdc++.so.6 | grep GLIBC
终端打印:
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_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH
可以发现GLIBCXX_3.4.22已经有了
7)最终测试
切换到python环境,执行:
import tensorflow as tf
可以发现错误已消失!
至此,可以进一步在树莓派3B+上安装opencv等工具,opencv的安装链接如下:
https://blog.csdn.net/weixin_43046653/article/details/85622662