CentOS6.8装tensorflow1.0

来源:互联网 发布:iphone软件排行 编辑:程序博客网 时间:2024/06/07 03:52

折腾了好几天,终于在服务器上装好了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


find / -name "libstdc++.so*"

将上面的最新动态库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权限问题。