可以在不重新编译的情况下更改动态链接目标吗?

可以在不重新编译的情况下更改动态链接目标吗?

我下载了一个程序不幸的是,它不是作为源代码发行版提供的。当我去运行它时,我收到错误

加载共享库时出错:libjpeg.so.62:无法打开共享对象文件:没有这样的文件或目录

该程序似乎已链接到我的发行版没有的特定版本的 libjpeg。创建一个/usr/lib32/libjpeg.so.62以我的实际名称命名的符号链接libjpeg.so可以解决问题,但是只是/usr/lib32为了让一个程序工作而四处寻找似乎很愚蠢而且太过分了。

有什么方法(无需重新编译)使程序动态链接libjpeg.so而不是libjpeg.so.62

FWIW,file该程序的信息是

ELF 32-bit LSB  executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped

答案1

对文件进行二进制编辑(例如vim -b),并将任何出现的 替换/usr/lib32/libjpeg.so.62为与您的libjpeg.so大小完全相同的路径,例如/usr/lib//////libjpeg.so

/usr/lib32/libjpeg.so.62
/usr/lib//////libjpeg.so

相关内容