node 在centos 6.5 上 安装过程中出现/usr/lib64/libstdc++.so.6: version 'GLIBCXX_3.4.19' not found问题的解决
在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
得到结果:
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_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH
到13到头了,所以报错啦。
为此,工作主要是两步:
第一步:升级GCC。
下载了最新的6.2.0版本。
https://ftp.gnu.org/gnu/gcc/gcc-6.2.0/
gcc
安装文件下载完成后,执行以下命令解压文件:
tar -xf gcc-6.2.0.tar.bz2
解压完成后,执行以下命令进入工作目录:
cd gcc-6.2.0
执行download_prerequisites
脚本,下载gcc
依赖文件和库:
./contrib/download_prerequisites
download_prerequisites
脚本,会下载安装gcc
所需的mpfr
、gmp
和mpc
文件。
建立一个输出目录,编译时所有生成的中间文件都放到该目录下:
mkdir build
工作目录切换至输出目录,并在其中执行配置和安装:
cd build
执行configure
配置安装文件:
../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
配置完成后,执行以下命令,编译gcc
:
make -j 6
注意:编译gcc
时间较长,可以多启用多个核数来执行。
编译完成后,安装gcc
:
make install
安装完成后还需要替换系统默认的gcc
,执行以下命令,查找6.2
版本的安装文件:
strings /usr/local/lib64/libstdc++.so.6|grep GLIBCXX
这里该有的都有了,把这份软链到正确的地方,就妥了。
ls -ls /usr/lib64/libstdc++.so*
ls -ls /usr/local/lib64/libstdc++.so*
cp /usr/local/lib64/libstdc++.so.6.0.19 /usr/lib64/
cd /usr/lib64
rm -f libstdc++.so.6
ln -s libstdc++.so.6.0.19 libstdc++.so.6
ls -l libstdc++*
ldconfig