116

スクラップ ヒープに予定されている古い実行可能ファイルがありますが、まだありません。私の環境から削除されたいくつかのライブラリに依存していますが、正常に動作するスタブ ライブラリがいくつかあります。この実行可能ファイルをこれらのスタブ ライブラリに向けたいと思います。はい、LD_LIBRARY_PATH を設定できますが、この実行可能ファイルは多くのスクリプトや多くのユーザーから呼び出されるため、1 か所で修正したいと考えています。

これについてはソースがなく、入手するのは難しいでしょう。私は考えていました-ELF対応エディターを使用してこのファイルを編集し、rpathに単純なPATHを追加して、新しいライブラリにヒットさせることはできますか? これは可能ですか、または ELF バイナリを作成すると、場所を固定して移動できなくなりますか?

4

4 に答える 4

197

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

うまくいきます。

于 2013-12-02T16:52:38.563 に答える
86

これを行うことができるというツールがありますchrpath- おそらくあなたのディストリビューションのパッケージで利用可能です。

于 2012-12-07T19:05:03.430 に答える
0

これは私にとってはうまくいき、XORIGINを$ORIGINに置き換えました。

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

于 2016-06-28T10:49:22.763 に答える