gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 11:47:05 33 4
gpt4 key购买 nike

我试图在linux服务器上安装tensorflow,而我只是一个没有根权限的用户。当我通过一个跳转服务器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,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类似的文件夹,mywhich 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
编辑2摘要(&S):
为了使雇佣俄罗斯人的答案更详细,我将在这里粘贴我的最终解决方案。
我的目标是在没有根权限的服务器上使用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是因为tensorflow需要2.17,2.17工作正常。
这个解决方案还有一个问题。我有时需要用Python类的os.system('ls')os.system('python xxx.py')调用shell命令。但它警告我,如果我用它的正常方式:sh: error while loading shared libraries: __vdso_time: invalid mode for dlopen(): Invalid argument和我还没有找到一个足够好的解决方案。

最佳答案

export LD_LIBRARY_PATH=/home/MYNAME/dependency/glibc-2.16/lib
This answer解释了为什么LD_LIBRARY_PATH不起作用,以及您应该怎么做。
我看了你的帖子,试着。。。
python: error while loading shared libraries: __vdso_time: invalid mode for dlopen(): Invalid argument
这个错误通常意味着ld-linuxlibc.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 - 使用较新版本的glibc时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57306200/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com