折腾了好几天,终于在服务器上装好了tensorflow。服务器一般喜欢装老版本的centOS6,很多库的版本很旧,导致装tensorflow过程中遇到各种坑,记录一下。
配置:系统CentOS6.8,python 2.7.12,用源码方式装tensorflow1.0。
直接用pip安装tensorflow,出现了这三个问题:
1,GLIBC_2.16 not found
2,GLIBCXX_3.4.14 not found
3,undefined symbol: PyUnicodeUCS4_FromStringAndSize
解决GLIBC_2.16问题:
(来自:http://blog.csdn.net/u011832895/article/details/53731199)
wget http://ftp.gnu.org/pub/gnu/glibc/glibc-2.17.tar.xz
xz -d glibc-2.17.tar.xz
tar -xvf glibc-2.17.tar
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 -j4
make install
(注:不是root的用户,需要在一些命名之前加sudo)
输入strings /lib64/libc.so.6|grep GLIBC,出来的结果中有GLIBC_2.16就OK了。
解决GLIBCXX_3.4.14问题:
我是通过升级gcc来解决的。(来自:http://www.cnblogs.com/lzpong/p/5755678.html)
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
cd gcc-6.1.0
./contrib/download_prerequisites
mkdir gcc-build-6.1.0
cd gcc-build-6.1.0
../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
make -j4
make install
将上面的最新动态库libstdc++.so.6.0.22复制到/usr/lib64目录下
cd /usr/lib64
cp <your path>/gcc-6.1.0/gcc-build-6.1.0/stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.22 ./
rm -rf libstdc++.so.6
ln -s libstdc++.so.6.0.22 libstdc++.so.6
输入strings /usr/lib64/libstdc++.so.6 | grep GLIBC看到GLIBCXX_3.4.22就OK了。
到第三个问题这,就放弃了pip安装,改用源码安装(参考官网https://www.tensorflow.org/versions/r1.0/install/install_sources)。
1,安装bazel
注意,0.4.0版本编译tansorflow不通过,必须大于0.4.2版本,然鹅在使用0.4.5版本时又出现一些其他问题(参见:http://www.cnblogs.com/shihuc/p/6593041.html)。所以用0.4.2版本。下载地址: https://github.com/bazelbuild/bazel/releases,选择 bazel-0.4.2-installer-linux-x86_64.sh。
如果机器上没有jdk1.8,先安装jdk1.8.(java -version查看是否有jdk1.8)
在/home/<username>下创建bin文件夹,将下载的bazel-0.4.2-installer-linux-x86_64.sh移动到/home/<username>/bin下,进入/home/<username>/bin,输入如下命令:
chmod +x bazel-0.4.2-installer-linux-x86_64.sh
./bazel-0.4.2-installer-linux-x86_64.sh --user
输入bazel --help检测是否安装成功。
2,下载tensorflow源码
git clone https://github.com/tensorflow/tensorflow -b r1.0
3,安装tensorflow依赖的包
可以事先通过pip安装tensorflow,虽然安装不成功,但能将这些依赖的库装上,就省去了人工安装。
4,编译tensorflow(参考http://www.jianshu.com/p/fdb7b54b616e)
cd tensorflow
bazel build -c opt //tensorflow/tools/pip_package:build_pip_package
mkdir _python_build
cd _python_build
ln -s ../bazel-bin/tensorflow/tools/pip_package/build_pip_package.runfiles/org_tensorflow/* .
ln -s ../tensorflow/tools/pip_package/* .
python setup.py develop
5,安装完成,测试一下:
python
>>>import tensorflow as tf
整个安装过程中,注意root权限问题。