强制linux程序从另一个位置读取libc库文件

时间:2017-07-26 09:06:38

标签: linux libc

我的机器是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。

有没有解决这个问题? 提前致谢

1 个答案:

答案 0 :(得分:0)

您还需要从glibc复制其他文件。您将需要程序解释器/lib64/ld-linux-x86-64.so.2,也可能需要libdl.so.2libm.so.6libpthread.so.0以及更多这些帮助程序库。

一旦有了这些,就可以尝试使用显式动态链接器调用与其他glibc一起启动任意程序。假设您已将文件复制到当前目录中,可以尝试:

./ld-linux-x86-64.so.2 --library-path . --inhibit-cache /bin/bash

请注意,这仅适用于直接启动的二进制文件(示例中为bash)。子进程(从shell启动的命令)将再次使用系统glibc。

如果您没有复制所有必需的glibc库,或者如果语言环境格式发生了不兼容的更改,那么新的glibc将无法使用系统区域设置,那么仍然可能会出现问题。