为什么 chrpath 的最大长度限制为 6?

为什么 chrpath 的最大长度限制为 6?

我正在尝试更改共享对象的 RUNPATH,但收到错误消息,指出它不能超过 6 个字符。这是什么原因呢?这是chrpathRaspbian 上的 0.16 版本。

$ chrpath -r ../../.. lib/vlc/plugins/access_output/libaccess_output_srt_plugin.so
lib/vlc/plugins/access_output/libaccess_output_srt_plugin.so: RUNPATH=../lib
new rpath '../../..' too large; maximum length 6

我能够使用设置更长的路径patchelf

答案1

chrpath如果标签不存在,则无法添加RPATH标签,并且无法扩展标签;因此,新路径的长度必须等于或短于现有路径。您的库最初RUNPATH设置为 to ../lib,因此chrpath只能将其替换为最多六个字符的路径。

patchelf没有这个限制。

答案2

rpath或 的新路径集runpath 不能大于最初存储的值(Code Yarns 网站)

您的前一个rpath正好是 6 个字符,在../lib您的示例中。你不能延长它。

正如 @R Perrin 所说,chrpath不会使用现有空间重写整个 ELF 文件,现有空间本身仅限于最初设置的空间。

相关内容