我正在尝试在Linux服务器上安装tensorflow,而我只是一个没有root许可的用户。而且,当我通过跳转服务器SSH到文件时,无法与文件传输文件。系统如下:
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
我通过安装了tensorflow pip install tensorflow,一个tensorflow程序将显示以下内容:
pip install tensorflow
ImportError: /lib64/libc.so.6: versionGLIBC_2.16’ not found `
ImportError: /lib64/libc.so.6: version
我安装了新版本的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
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 gccshows 类似的文件夹/usr/local/sbin/gcc,但是它链接到/usr/local/gcc-5.3.0/bin/gcc,没有lib64子文件夹)
/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
但是随后出现了以下警告:
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
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
/home/MYNAME/dependency/glibc-2.16/lib/ld-2.16.so python
EDIT2和摘要:
为了使“俄罗斯雇主”的答案更加详细,我将在此处粘贴最终解决方案。
我的目标是在我没有root权限的服务器上使用tensorflow。我被警告ImportError: /lib64/libc.so.6: version 'GLIBC_2.16' not found输入张量流时。
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
import sys; print(sys.executable)
其他事情:
os.system('ls')
os.system('python xxx.py')
sh: error while loading shared libraries: __vdso_time: invalid mode for dlopen(): Invalid argument
此答案说明了为什么LD_LIBRARY_PATH不起作用以及应该怎么做。
LD_LIBRARY_PATH
我阅读了您的帖子并尝试了… python: error while loading shared libraries: __vdso_time: invalid mode for dlopen(): Invalid argument
该错误通常表示您和之间 不匹配 。他们 必须 匹配。ld-linux``libc.so.6 __
ld-linux``libc.so.6
如果您通过使用直接加载程序调用/home/MYNAME/.../ld-2.16.so,则还 必须 安排/home/MYNAME/.../libc.so.6进行加载。
/home/MYNAME/.../ld-2.16.so
/home/MYNAME/.../libc.so.6
您可以通过传递--library-path ...到ld-2.16.so或进行LD_LIBRARY_PATH适当设置来做到这一点。
--library-path ...
ld-2.16.so
你用命令ld-2.16 --library-path ... ls是 几乎 正确的。你缺少的事情是,ld-2.16将 不会 搜索你PATH。您需要为其提供 完整的 路径名:ld-2.16 --library-path ... /bin/ls。
ld-2.16 --library-path ... ls
ld-2.16
PATH
ld-2.16 --library-path ... /bin/ls