首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我可以在已编译的二进制文件中更改'rpath‘吗?

我可以在已编译的二进制文件中更改'rpath‘吗?
EN

Stack Overflow用户
提问于 2012-12-08 02:46:57
回答 3查看 74.5K关注 0票数 115

我有一个旧的可执行文件,它被安排在废料堆中,但它还没有出现。它依赖于一些已经从我的环境中删除的库,但我在某些地方有一些存根库,在那里它工作得很好。我想把这个可执行文件指向这些存根库。是的,我可以设置LD_LIBRARY_PATH,但这个可执行文件是从许多脚本中调用的,许多用户和我都希望在一个地方修复它。

我对此没有来源,而且很难得到它。我在想-我能不能用ELF感知的编辑器编辑这个文件,并在rpath中添加一个简单的路径,让它命中新的库?这是可能的吗?或者一旦你创建了ELF二进制文件,你就把东西固定到了不能移动的位置上?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-12-08 03:05:03

有一个名为chrpath的工具可以做到这一点-它可能在您的发行版软件包中提供。

票数 86
EN

Stack Overflow用户

发布于 2013-12-03 00:52:39

有一个比chrpath更通用的工具叫做patchelf。它最初是为Nix和NixOS (打包系统和GNU/Linux发行版)制作包而创建的。

如果二进制文件(这里称为rdsamp)中没有rpath,chrpath将失败:

chrpath -r '$ORIGIN/../lib64' rdsamp 
rdsamp: no rpath or runpath tag found.

另一方面,

patchelf --set-rpath '$ORIGIN/../lib64' rdsamp

一切都很顺利。

票数 194
EN

Stack Overflow用户

发布于 2016-06-28 18:49:23

这对我很有效,用$ORIGIN代替了XORIGIN。

chrpath -r '\$\ORIGIN/../lib64' httpd

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13769141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档