前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >tensorflow 1.0安装过程中出现/usr/lib64/libstdc++.so.6: version 'GLIBCXX_3.4.19' not found问题的解决

tensorflow 1.0安装过程中出现/usr/lib64/libstdc++.so.6: version 'GLIBCXX_3.4.19' not found问题的解决

作者头像
sparkexpert
发布2018-01-09 16:17:02
4.2K0
发布2018-01-09 16:17:02
举报

在linux redhat 6.4环境下安装tensorflow的过程中,利用PIP直接安装是非常快的。

但是在调用测试的过程中,却发现报这样的错误。

/usr/lib64/libstdc++.so.6: version 'GLIBCXX_3.4.19' not found

导致总是出现 failed to load the native tensorflow runtime的信息。

根据这个问题,发现肯定是tensorflow的一些内部控件无法编译,主要原因还是版本太低。

在终端上输入如下命令:strings /usr/lib64/libstdc++.so.6|grep GLIBCXX

得到结果:

代码语言:javascript
复制
GLIBCXX_3.4
代码语言:javascript
复制
GLIBCXX_3.4.1
代码语言:javascript
复制
GLIBCXX_3.4.2
代码语言:javascript
复制
GLIBCXX_3.4.3
代码语言:javascript
复制
GLIBCXX_3.4.4
代码语言:javascript
复制
GLIBCXX_3.4.5
代码语言:javascript
复制
GLIBCXX_3.4.6  
代码语言:javascript
复制
GLIBCXX_3.4.7
代码语言:javascript
复制
GLIBCXX_3.4.8
代码语言:javascript
复制
GLIBCXX_3.4.9
代码语言:javascript
复制
GLIBCXX_3.4.10
代码语言:javascript
复制
GLIBCXX_3.4.11
代码语言:javascript
复制
GLIBCXX_3.4.12
代码语言:javascript
复制
GLIBCXX_3.4.13
代码语言:javascript
复制
GLIBCXX_FORCE_NEW
代码语言:javascript
复制
GLIBCXX_DEBUG_MESSAGE_LENGTH

到13到头了,所以报错啦。

为此,工作主要是两步:

第一步:升级GCC。

下载了最新的6.2.0版本。

代码语言:javascript
复制
wget http://gcc.parentingamerica.com/releases/gcc-6.2.0/gcc-6.2.0.tar.bz2

gcc安装文件下载完成后,执行以下命令解压文件:

代码语言:javascript
复制
tar -xf gcc-6.2.0.tar.bz2

解压完成后,执行以下命令进入工作目录:

代码语言:javascript
复制
cd gcc-6.2.0

执行download_prerequisites脚本,下载gcc依赖文件和库:

代码语言:javascript
复制
./contrib/download_prerequisites

download_prerequisites脚本,会下载安装gcc所需的mpfrgmpmpc文件。

建立一个输出目录,编译时所有生成的中间文件都放到该目录下:

代码语言:javascript
复制
mkdir build

工作目录切换至输出目录,并在其中执行配置和安装:

代码语言:javascript
复制
cd build

执行configure配置安装文件:

代码语言:javascript
复制
../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib

配置完成后,执行以下命令,编译gcc

代码语言:javascript
复制
make -j 6

注意:编译gcc时间较长,可以多启用多个核数来执行。

编译完成后,安装gcc

代码语言:javascript
复制
make install

安装完成后还需要替换系统默认的gcc,执行以下命令,查找6.2版本的安装文件:

第二步:升级GLIBCXX

注意,进入GCC编译输出目录,.libs是隐藏的:build/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs

用下面的命令查看:

代码语言:javascript
复制
strings libstdc++.so.6.0.22|grep GLIBCXX

一般来讲,里面就有满足需要的GLIBCXX版本了。

然后,把该文件拷贝到了/usr/lib64下.

然后将libstdc++.so.6指向libstdc++.so.6.0.22:

这一步一定要在ROOT权限下执行。

代码语言:javascript
复制
rm -r libstdc++.so.6
代码语言:javascript
复制
rm: remove symbolic link `libstdc++.so.6'? y
代码语言:javascript
复制
ln -s libstdc++.so.6.0.18 libstdc++.so.6

这就Ok了。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年02月22日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • /usr/lib64/libstdc++.so.6: version 'GLIBCXX_3.4.19' not found
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档