共有オブジェクトのRUNPATHを変更しようとしたが、6文字を超えることができないというエラーが発生します。その理由は何ですか?これはchrpath
Raspbianバージョン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
にに設定されている../lib
ため、chrpath
最大6文字のパスにのみ置き換えることができます。
patchelf
そのような制限はありません。
答え2
rpath
または新しいルートセットrunpath
元の保存値より大きくすることはできません。 (Code Yarnsウェブサイト)。
あなたの例では、前の文字はrpath
正確に6文字です../lib
。延長できません。
@R Perrinが述べたように、chrpath
ELFファイル全体は既存のスペースを使用して書き換えられず、元々設定されたスペースに制限されます。