Linux软件安装③|TensorFlow
最新版本的 TensorFlow 要求 GLIBC 2.17 以上,尽管推荐做法是找一台最新系统的机子,但是有时候系统的类型不是由自己决定的,通常又没有root权限,又想在所有机子上都能运行 TensorFlow 。
刚好手里有一个超算账号,系统是 Red Hat 4.4.7 ,GLIBC 版本是 2.12 ,就以此为例,安装CPU版本的TensorFlow(反正没有权限也安装不了GPU版本需要的驱动)。
一、用 Anaconda 3 安装 TensorFlow 1.8
1.安装 Anaconda 3
2.创建 TensorFlow 环境
1 | conda create -n tensorflow pip python=3.6 |
二、安装 gcc
这时候打开 Python ,执行 import tensorflow ,提示:
ImportError: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.7’ not found
1 | conda install -c psi4 gcc-5 |
再此运行 Python,不再提示这个问题。
三、安装 GLIBC 2.21
但是提示:
ImportError: /lib64/libc.so.6: version `GLIBC_2.16’ not found
本来应该安装GLIBC 2.17,但是我发现从2.16到2.19都有个bug,不能运行Python 3.6。于是我们安装GLIBC 2.21。
1.下载GLIBC 2.21并编译GLIBC 2.21
1 | wget http://mirror.rit.edu/gnu/libc/glibc-2.21.tar.gz |
然后就报错了:
checking version of as… 2.20.51.0.2, bad checking version of ld… 2.20.51.0.2, bad These critical programs are missing or too old: as ld
仔细看看INSTALL文件,要求GNU ‘binutils’ 2.22 or later,但系统只装了2.20。
2.下载并编译binutils 2.30
1 | wget ftp://ftp.gnu.org/gnu/binutils/binutils-2.30.tar.gz |
3.重新编译glibc 2.21
1 | cd glibc-2.21-build |
Warning: ignoring configuration file that cannot be opened: … /software/glibc-2.21-install/etc/ld.so.conf: No such file or directory
将/etc 目录的ld.so.conf复制到指定目录后重新安装:
1 | cp /etc/ld.so.conf ../glibc-2.21-install/etc/ |
安装成功。
四、运行TensorFlow
1 | source activate tensorflow |
在Python内输入:
1 | # Python |
b’Hello, TensorFlow!’
运行成功。我们可以运行的命令记录在.bashrc中:
1 | echo 'alias tf='"'"'$HOME/software/glibc-2.21-install/lib/ld-2.21.so --library-path $HOME/anaconda3/envs/tensorflow/lib:$HOME/software/glib-2.21-install/lib:/lib64:$LD_LIBRARY_PATH `which python`'"'">>$HOME/.bashrcsource $HOME/.bashrc |
即可用 tf 代替装了 TensorFlow 的 Python。