树莓派3B+安装完tensorflow后,运行时报错ImportError..vesrion ''GLIBCXX_3.4.22' not found(required by /usr/local/..

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

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值