使用更新版本的glibc时出错

我试图在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

我通过pip install tensorflow ,一个tensorflow程序将显示以下内容

ImportError: /lib64/libc.so.6: version `GLIBC_2.16' not found

如何在Windows下使用PyQt(和sip)编译(和链接python模块

链接到Boost正则expression式库时程序启动时崩溃

在makefile中设置共享库的path进行编译

多余的图书馆联系

-fprofile-arcs链接器选项是什么意思?

我安装了一个新版本的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

遵循在线说明,我通过以下方式更改了环境variables:

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 (我不知道在哪里可以find和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通过导出variables来清空。 但我仍然不能使用新版本的glibc。 任何人都可以帮助我如何正确链接新的glibc? 任何build议,将不胜感激!

编辑:所以进展如下:

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

编辑2&总结:

为了使就业俄罗斯的答案更详细,我会在这里贴上我的最终解决scheme。

我的目标是在没有root权限的服务器上使用Python中的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

将命令拆分为以下几部分(我将使用???来表示不同人的path):

LD_LIBRARY_PATH=

这部分处理依赖关系

:意味着分裂

???/glibc-2.17/lib/

/lib64/和/usr/local/gcc-5.3.0/lib64/ :我通过find / -name 'libgcc_s.so.1'find了这些文件夹,因为我是

/???/glibc-2.17/lib/ld-2.17.so

/???/python可执行文件的path。 对于Python, import sys; print(sys.executable) import sys; print(sys.executable)来查看你的Pythonpath。

其他事情:

glibc-2.17从gnu下载。 我select了2.17,因为tensorflow需要2.17和2.17正常工作。

这个解决scheme还有另一个问题。 我有时需要在Python中调用shell命令,如os.system('ls')或os.system('python xxx.py') 。 但是,如果以正常的方式使用它,它会警告我: sh: error while loading shared libraries: __vdso_time: invalid mode for dlopen(): Invalid argument ,我还没find足够好的解决scheme。

创build一个生成DLL的应用程序

在Windows上使用GSL(编译,链接等)。 逐步指南

未使用function的链接错误:它们什么时候发生?

:我是否需要在项目的makefile中添加库中使用的所有库,在我的项目中使用?

为什么GNU链接程序找不到与-l <库>共享的对象?

export LD_LIBRARY_PATH=/home/MYNAME/dependency/glibc-2.16/lib

这个答案解释了为什么LD_LIBRARY_PATH不起作用,你应该做什么。

我读了你的帖子,并试图…

python: error while loading shared libraries: __vdso_time: invalid mode for dlopen(): Invalid argument

这个错误通常意味着你在ld-linux和libc.so.6之间不匹配 。 他们必须匹配。

如果通过/home/MYNAME/.../ld-2.16.so使用直接加载器调用,则还必须安装/home/MYNAME/.../libc.so.6加载。

你可以通过传递--library-path ...到ld-2.16.so ,或者适当地设置LD_LIBRARY_PATH来实现。

你的命令与ld-2.16 --library-path ... ls 几乎是正确的。 你缺少的是ld-2.16 不会搜索你的PATH 。 你需要给它完整的路径名: ld-2.16 --library-path ... /bin/ls 。

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....