手動でロードされたライブラリで事前接続を使用しますか? (Javaネイティブライブラリに似ています)

手動でロードされたライブラリで事前接続を使用しますか? (Javaネイティブライブラリに似ています)

私が知る限り、フリーリンク実行可能ファイルがコンパイル時に必要であると宣言した動的ライブラリ(次のコマンドを使用して見つけることができるライブラリ)にのみ使用できます。LDD)。プラグインや(私の特別な場合には)Java基本ライブラリなど、実行可能ファイルによって手動でロードされる動的ライブラリは含まれていないようです。このタイプのライブラリを無視するように事前接続を強制する方法はありますか?

答え1

ELFバイナリで実行すると、prelinkバイナリ自体とその依存関係のみを確認します(ELF.dynamicおよびELFセクション.dynstrで参照)。

以下が利用可能でなければなりません。

prelink --libs-only libone.so libtwo.so [...]

あるライブラリが別のライブラリに依存している場合は、同じコマンドラインで一緒に指定する必要があります(つまり、通常のリンカパスにない場合)。

しかし、、事前接続の重要な部分は、ロードする最適な位置を決定できることです。すべて処理中のライブラリーの場合、ライブラリーを別々に実行すると、事前接続のすべての利点が得られない可能性があります。次の2つの条件が満たされている限り、これは発生しません。

  • /etc/prelink.cacheすべてのライブラリが一意の基盤を持つように共有キャッシュ()を使用します。
  • -m事前接続時に使用されない(メモリーを節約)

タスクが成功したことを確認してください。

prelink --print-cache

関連情報