操作系統版本centos 6.5
gcc版本:4.4.7
glibc版本:2.12
python版本:2.7.3
tensorflow:1.4.0 需要glibc GLIBC_2.17、CXXABI_1.3.7、GLIBCXX_3.4.19
yum install gcc
python get-pip.py
zipimport.ZipImportError: can't decompress data; zlib not available
yum install zlib-devel #重新編譯python,問題解決
pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
yum install openssl-devel ##重新編譯python,問題解決
#安裝python
cd Python-2.7.13
./configure --prefix=/data/machine/python --enable-unicode=ucs4
make && make install
chown -R machine.machine /data/machine/python
#安裝pip
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
#安裝tensorflow
pip install tensorflow
#pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow
#查找需要更新的版本
cd /data/machine/python/lib/python2.7/site-packages/tensorflow
find ./ -name *.so |xargs ldd
./libtensorflow_framework.so: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./libtensorflow_framework.so)
./libtensorflow_framework.so: /lib64/libc.so.6: version `GLIBC_2.17' not found (required by ./libtensorflow_framework.so)
./libtensorflow_framework.so: /lib64/libc.so.6: version `GLIBC_2.16' not found (required by ./libtensorflow_framework.so)
./libtensorflow_framework.so: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.18' not found (required by ./libtensorflow_framework.so)
./libtensorflow_framework.so: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by ./libtensorflow_framework.so)
./libtensorflow_framework.so: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.5' not found (required by ./libtensorflow_framework.so)
./libtensorflow_framework.so: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.19' not found (required by ./libtensorflow_framework.so)
./libtensorflow_framework.so: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.17' not found (required by ./libtensorflow_framework.so)
./libtensorflow_framework.so: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.7' not found (required by ./libtensorflow_framework.so)
統計發現
/lib64/libc.so.6 GLIBC_2.17
/usr/lib64/libstdc++.so.6 CXXABI_1.3.7、GLIBCXX_3.4.19
#升級glibc
#glibc升級採用編輯完成後,只更新libc.so.6。存在如下文件。故採用全新升級glibc文件
ls: error while loading shared libraries: __vdso_time: invalid mode for dlopen(): Invalid argument
tar xf glibc-2.17.tar.gz
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 #建議不採用ssh執行,通過不依賴操作系統的方式執行;更新的部分庫文件,ssh也依賴
#升級gcc
tar xf gcc-4.8.1.tar.gz
cd gcc-4.8.1
./contrib/download_prerequisites
#建立build_gcc_4.8.1目錄,這個目錄和gcc-4.8.1平行
cd ..
mkdir build_gcc_4.8.1
cd build_gcc_4.8.1
#執行編譯過程
../gcc-4.8.1/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
make -j23
find ./ -name libstdc++.so.6.0.18
將找到的libstdc++.so.6.0.18,拷貝到/usr/lib64/
chmod 755 /usr/lib64/libstdc++.so.6.0.18
更新連接文件
rm -rf /usr/lib64/libstdc++.so.6
LD_PRELOAD=/usr/lib64/libstdc++.so.6.0.13 ln -s /usr/lib64/libstdc++.so.6.0.18 /usr/lib64/libstdc++.so.6
#LD_PRELOAD,是個環境變量,用於動態庫的加載,動態庫加載的優先級最高,一般情況下,其加載順序爲LD_PRELOAD>LD_LIBRARY_PATH>/etc/ld.so.cache>/lib>/usr/lib
ls #測試命令是否正常,如果存在問題,採用如下辦法回退
回退辦法
rm -rf /usr/lib64/libstdc++.so.6
LD_PRELOAD=/usr/lib64/libstdc++.so.6.0.13 ln -s /usr/lib64/libstdc++.so.6.0.13 /usr/lib64/libstdc++.so.6
參考文章:
http://www.tensorfly.cn/tfdoc/get_started/introduction.html
http://blog.csdn.net/u013735511/article/details/76147138
https://github.com/qiwsir/ITArticles/blob/master/Linux/upgrade_gcc_on_Centos.md