我想在linux服务器上安装tensorflow,我只是一个没有root权限的用户。我无法通过跳转服务器将文件传输到/从它传输。该系统是如下:使用更新版本的glibc时出错
Linux THENAME_OF_SURVER 2.6.32-573.18.1.el6.x86_64 #1 SMP Tue Feb 9 22:46:17 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
我通过pip install tensorflow
安装tensorflow和tensorflow程序将显示如下内容:
ImportError: /lib64/libc.so.6: version `GLIBC_2.16' not found
我glibc安装了新版本的
git clone git://sourceware.org/git/glibc.git cd glibc git checkout --track -b local_glibc-2.16 origin/release/2.16/master mkdir build cd build ../configure --prefix=/home/MYNAME/dependency/glibc-2.16 make -j4 make install
跟着指示在线,我通过改变环境变量:
export LD_LIBRARY_PATH=/home/MYNAME/dependency/glibc-2.16/lib
但是这让我一个问题:我不能使用任何命令。例如,我叫ls
,它会提醒我这个样子:
ls: error while loading shared libraries: __vdso_time: invalid mode for dlopen(): Invalid argument
我再接着另一个指令为以下运行命令:
/home/MYNAME/dependency/glibc-2.16/lib/ld-linux-x86-64.so.2 --library-path /home/MYNAME/dependency/glibc-2.16/lib:$LD_LIBRARY_PATH:/path/to/gcc-5.2.0/lib64:/usr/lib64/:/usr/lib64/ ls
(我不知道在哪里可以找到类似的文件夹gcc-5.2.0
,我which gcc
显示/usr/local/sbin/gcc
,但它链接到/usr/local/gcc-5.3.0/bin/gcc
,它不具有lib64的子文件夹)
但随后与前来以下警告:
ls: error while loading shared libraries: ls: cannot open shared object file
我知道我可以通过出口再次使用ls
变量为空。但我仍然无法使用新版本的glibc。任何人都可以帮助我如何正确链接新的glibc?任何建议,将不胜感激!
编辑: 所以进度如下:
LD_LIBRARY_PATH=/home/MYNAME/dependency/glibc-2.16/lib python
会导致python: error while loading shared libraries: __vdso_time: invalid mode for dlopen(): Invalid argument
/home/MYNAME/dependency/glibc-2.16/lib/ld-2.16.so python
会导致python: error while loading shared libraries: __vdso_time: invalid mode for dlopen(): Invalid argument
EDIT2 &摘要:
为了使就业俄罗斯的回答更详细的,我会在这里贴上我的最终解决方案。
我的目标是在没有root权限的服务器上使用Python中的tensorflow。当输入tensorflow时,我被警告ImportError: /lib64/libc.so.6: version 'GLIBC_2.16' not found
。
基于使用俄罗斯的答案,我用下面的运行我的命令:
LD_LIBRARY_PATH=/home/USERNAME/dependency/glibc-2.17/lib/:/lib64/:/usr/local/gcc-5.3.0/lib64/ /home/USERNAME/dependency/glibc-2.17/lib/ld-2.17.so /home/USERNAME/anaconda2/bin/python
拆分命令分为以下几部分(我会用???
表示,对于不同的人有不同的路径。):
LD_LIBRARY_PATH=
- 这部分交易与依赖
:
手段分裂???/glibc-2.17/lib/
/lib64/
和/usr/local/gcc-5.3.0/lib64/
:我通过find/-name 'libgcc_s.so.1'
发现这些文件夹,因为我是
/???/glibc-2.17/lib/ld-2.17.so
/???/python
您的可执行文件的路径。对于Python,import sys; print(sys.executable)
来查看你的Python路径。
其他的事情:
- 的glibc-2.17是gnu下载。我选择了2.17,因为张量流需要2.17和2.17正常工作。
- 此解决方案还有另一个问题。我有时需要在Python中调用shell命令,如
os.system('ls')
或os.system('python xxx.py')
。但是,如果我以正常的方式使用它,它会警告我:sh: error while loading shared libraries: __vdso_time: invalid mode for dlopen(): Invalid argument
,我还没有找到足够好的解决方案。
您是否尝试过仅为运行'python'设置'LD_LIBRARY_PATH'变量?即运行单个命令:'LD_LIBRARY_PATH =/home/MYNAME/dependency/glibc-2.16/lib python',然后在提示的提示符处输入'import tensorflow as tf'? – mrry
@mrry我试过,但它仍然警告相同:'python:加载共享库时出错:__vdso_time:无效模式为dlopen():无效参数' –