我的机器是slackware linux 64内核3.0.4。 对于这台机器,我没有root权限,管理员不可用。
我正在尝试运行需要库文件libc版本2.14的程序,而/ lib64中安装的程序是libc-2.13。
我有一台相同的机器,我有root权限。我尝试将libc-2.14文件从这台机器复制到第一台然后将它放入$ HOME / lib64文件夹并将此文件夹添加到LD_LIBRARY_PATH,然后创建一个新的符号链接libc.so.6指向libc-2.14文件,但程序继续读取/ lib64中指向libc-2.13的libc.so.6文件。我无法修改/ lib64中的任何内容,因为我不是root。
有没有解决这个问题? 提前致谢
答案 0 :(得分:0)
您还需要从glibc复制其他文件。您将需要程序解释器/lib64/ld-linux-x86-64.so.2
,也可能需要libdl.so.2
,libm.so.6
,libpthread.so.0
以及更多这些帮助程序库。
一旦有了这些,就可以尝试使用显式动态链接器调用与其他glibc一起启动任意程序。假设您已将文件复制到当前目录中,可以尝试:
./ld-linux-x86-64.so.2 --library-path . --inhibit-cache /bin/bash
请注意,这仅适用于直接启动的二进制文件(示例中为bash
)。子进程(从shell启动的命令)将再次使用系统glibc。
如果您没有复制所有必需的glibc库,或者如果语言环境格式发生了不兼容的更改,那么新的glibc将无法使用系统区域设置,那么仍然可能会出现问题。