4

アプリケーションは Firefox プラグイン ($HOME/.mozilla/plugins からロード) であるため、LD_LIBRARY_PATH を設定するラッパー スクリプトは簡単なオプションではありません。

私の知る限り、RPATH は $HOME を参照することはできず、絶対パスしか指定できません。

Firefox は ~/.mozilla/plugins からプラグインを dlopen しようとしますが、失敗します (ユーザーのホーム ディレクトリのどこかにインストールされた共有ライブラリに依存するため)。

Firefox のメニュー項目を変更して、Firefox の周りに (LD_LIBRARY_PATH を使用して) ラッパーを提供するのはハックすぎます。

共有ライブラリに依存する標準の Firefox ロード プラグインを作成するために、インストーラ スクリプトは (root アクセスなしで) 何をすべきですか?

  1. 依存関係を削除するために、すべてをその .so に埋め込むようにする必要がありますか?
  2. インストール段階で RPATH のリンクまたはパッチを完了するために、インストーラー スクリプトを作成する必要がありますか?
4

1 に答える 1

4

RPATH を に設定し$ORIGIN/libて、ローダーが my ファイルに関連するライブラリを検索するようにします。

スクリプトは、プラグイン$HOME/.mozilla/plugins/myplugin.soとライブラリを展開するだけです$HOME/.mozilla/plugins/lib/

rpath は、追加することで gcc を介してリンカーに指定できWl,-rpath,'$ORIGIN/lib'( $Makefile では 2 倍にする必要があります)、コンパイル後に で変更することもできますpatchelf

于 2010-06-11T19:52:32.440 に答える