共有ライブラリを含む GNU/Linux Firefox プラグインの出荷 (root アクセスなしでのインストール用)
-
26-09-2019 - |
質問
アプリケーションは Firefox プラグイン ($HOME/.mozilla/plugins からロードされる) であるため、LD_LIBRARY_PATH を設定するラッパー スクリプトは簡単なオプションではありません。
私の知る限り、RPATHは$HOMEを参照できず、絶対パスのみにすることができます。
Firefox は ~/.mozilla/plugins からプラグインを dlopen しようとしますが、失敗します (ユーザーのホーム ディレクトリのどこかにインストールされた共有ライブラリに依存しているため)。
Firefox のメニュー項目を変更して Firefox の周囲にラッパー (LD_LIBRARY_PATH を使用) を提供するのはハッキングすぎます。
共有ライブラリに依存する標準の Firefox ロード プラグインを作成するには、インストーラー スクリプトは (root アクセスなしで) 何をすべきですか?
- 依存関係を削除するには、その .so にすべてを埋め込むだけでよいでしょうか?
- リンクを完了するためのインストーラー スクリプトを作成するか、インストール段階で RPATH にパッチを適用する必要がありますか?
解決
$ORIGIN/lib
に設定RPATHローダが私のファイルへの相対ライブラリを探しますのでます。
スクリプトは、ちょうど$HOME/.mozilla/plugins/myplugin.so
$HOME/.mozilla/plugins/lib/
やライブラリへのプラグインをアンパック
Wl,-rpath,'$ORIGIN/lib'
を添加することにより、GCCは($
がMakefileで倍増しなければならない)、またpatchelf
によってコンパイル後に変更することができるもののます。 RPATHがリンカーに指定することができ
所属していません StackOverflow