linux – 使用较新版本的glibc时出错

前端之家收集整理的这篇文章主要介绍了linux – 使用较新版本的glibc时出错前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图在 linux服务器上安装tensorflow,我只是一个没有root权限的用户.当我通过跳转服务器ssh到它时,我无法传输文件.系统如下:

Linux THENAME_OF_SURVER 2.6.32-573.18.1.el6.x86_64#1 SMP Tue 2月9日22:46:17 UTC 2016 x86_64 x86_64 x86_64 GNU / Linux

我通过pip install tensorflow安装了tensorflow,tensorflow程序会显示以下内容

ImportError:/lib64/libc.so.6:找不到版本“GLIBC_2.16”

我安装了新版本的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:加载共享库时出错:__ docso_time:dlopen()的无效模式:参数无效

然后我按照另一条指令运行命令,如下所示:

/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类似的文件夹,我的gcc显示/usr/local / sbin / gcc,但它链接到/usr/local/gcc-5.3.0/bin/gcc,没有lib64子文件夹)

但随后又出现了以下警告:

ls:加载共享库时出错:ls:无法打开共享对象文件

我知道我可以通过将变量导出为空来再次使用ls.但我仍然无法使用新版本的glibc.谁能帮助我如何正确链接新的glibc?任何建议,将不胜感激!

编辑:
所以进展情况如下:

> LD_LIBRARY_PATH = / home / MYNAME / dependency / glibc-2.16 / lib python
加载共享库时会导致python:错误:__ docso_time:dlopen()的无效模式:无效的参数
> /home/MYNAME/dependency/glibc-2.16/lib/ld-2.16.so python
加载共享库时会导致python:错误:__ docso_time:dlopen()的无效模式:无效的参数

EDIT2&摘要

为了使Employed Russian的答案更加详细,我会在此处粘贴我的最终解决方案.

我的目标是在我没有root权限的服务器上使用Python中的tensorflow.我被警告导入tensorflow时找不到ImportError:/lib64/libc.so.6:版本’GLIBC_2.16′.

根据Employed Russian的回答,我使用以下命令运行我的命令:

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.所以/ 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,导入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:加载共享库时出错:__ docso_time:dlopen()的无效模式:无效的参数,我没有找到一个足够好的解决方案.

解决方法

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

This answer解释了为什么LD_LIBRARY_PATH不起作用,以及你应该做什么.

I read your post and tried …
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.

猜你在找的Linux相关文章