TensorFlow import报错,`GLIBCXX_3.4.27' not found,'GLIBC_2.17' not found
python版本3.6.2
TensorFlow版本1.12.0
centos 6.5
一、/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.17’ not found
检查了gcc版本:gcc --version 得到结果gcc (GCC) 4.4.7.
添加yum 的 repo 文件 也不行, 只能更新到 4.4.7!
then, 只能手动编译安装了。
为了省事,我就直接给它升级到3.4.21
具体参照:https://www.cnblogs.com/lzpong/p/5755678.html
1、 获取安装包并解压
wget http://ftp.gnu.org/gnu/gcc/gcc-6.1.0/gcc-6.1.0.tar.bz2
tar -jxvf gcc-6.1.0.tar.bz2
当然,http://ftp.gnu.org/gnu/gcc 里面有所有的gcc版本供下载
2、 下载供编译需求的依赖项
参考文献[1]中说:这个神奇的脚本文件会帮我们下载、配置、安装依赖库,可以节约我们大量的时间和精力。
cd gcc-6.1.0
./contrib/download_prerequisites
3、 建立一个目录供编译出的文件存放
mkdir gcc-build-6.1.0
cd gcc-build-6.1.0
4、 生成Makefile文件
…/configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
5、 编译
make -j4
-j4选项是make对多核处理器的优化,如果不成功请使用 make,相关优化选项可以移步至参考文献[2]。
(注意:此步骤非常耗时,我虚拟机耗时近3小时; 实体机近80分钟,CPU基本是满的,内存也使用不少)
6、 安装
make install
7、 重启,然后查看gcc版本
gcc -v
8、升级gcc,生成的动态库没有替换老版本gcc的动态库
源码编译升级安装了gcc后,编译程序或运行其它程序时,有时会出现类似/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21’ not found的问题。这是因为升级gcc时,生成的动态库没有替换老版本gcc的动态库导致的,将gcc最新版本的动态库替换系统中老版本的动态库即可解决。
8.1 运行以下命令检查动态库:
strings /usr/lib64/libstdc++.so.6 | grep GLIBC
从输出可以看出,gcc的动态库还是旧版本的。说明出现这些问题,是因为升级gcc时,生成的动态库没有替换老版本gcc的动态库。
8.2 执行以下命令,查找编译gcc时生成的最新动态库:
find / -name “libstdc++.so*”
将上面的最新动态库libstdc++.so.6.0.22复制到/usr/lib64目录下
cd /usr/lib64
cp /root/Downloads/gcc-6.1.0/gcc-build-6.1.0/stage1-x86_64-pc-linux-gnu/libstdc+±v3/src/.libs/libstdc++.so.6.0.22 ./
8.3 删除原来软连接:
rm -rf libstdc++.so.6
8.4 将默认库的软连接指向最新动态库:
ln -s libstdc++.so.6.0.22 libstdc++.so.6
8.5 默认动态库升级完成。重新运行以下命令检查动态库:
strings /usr/lib64/libstdc++.so.6 | grep GLIBC
可以看到 输出有"GLIBCXX_3.4.21" 了
二、ImportError: /lib64/libc.so.6: version `GLIBC_2.16’ not found
出现这种错误表明程序运行需要GLIBC_2.16,但是系统中却并不存在,因此可以先用strings命令查看下系统中的GLIBC版本
strings /lib64/libc.so.6 | grep GLIBC
发现系统中最高只支持GLIBC_2.12,而在CentOS上,使用yum install glibc命令,只能更新到2.12版本。需要手动下载编译安装。与上一个问题类似。
具体参考:<>
https://yq.aliyun.com/ziliao/295698
glibc-2.17下载地址:https://ftp.gnu.org/gnu/glibc/glibc-2.17.tar.gz
1、下载glibc并解压缩(有点慢)
wget https://ftp.gnu.org/gnu/glibc/glibc-2.17.tar.gz
tar -xvf glibc-2.17.tar.gz
2、编译安装
cd glibc-2.17
mkdir build
cd build
…/configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
make && make install
3、查看glibc共享库
ll /lib64/libc.so.6
lrwxrwxrwx. 1 root root 12 Jan 7 16:19 /lib64/libc.so.6 -> libc-2.17.so
4、可以查看系统中可使用的glibc版本
GLIBC_2.17已在列表中显示
现在应该就没问题了。
