2

一部の人々は、共有オブジェクト ファイルをリンクして、NEEDED リストにエントリがないようにしています。これらの SO ファイルをバイナリにリンクするときは、代わりにすべての SO ファイルの推移的な依存関係を、作成されたバイナリの NEEDED リストに入れます。バイナリには実際にこれらの SO ファイルが必要です。

必要な SO ファイルを特定の SO ファイルにリンクしない前者の行為はアンダーリンクと呼ばれ、特定のバイナリに過剰な SO ファイルをリンクする後者の行為はオーバーリンクと呼ばれます

アプリケーションとその SO ファイルを構築するこのスキームが、アプリケーションまたはその SO ファイルを構築または実行するときに何らかのパフォーマンス コストを課すかどうか、同僚と話し合っています。たとえば、PLT の動的シンボル解決には追加コストがかかるのではないでしょうか? 誰かがこれに光を当てることができますか?

4

1 に答える 1

2

それは確かにシンボル検索のパフォーマンスを変えます。おそらくもっと悪いことです。ELF シンボル解決は、実行可能ファイル自体のシンボル テーブル、次に実行可能ファイルの DT_NEEDED ライブラリのシンボル テーブル、それらのライブラリの DT_NEEDED のシンボル テーブルなどから始まる幅優先検索です。メインの実行可能ファイルをオーバーリンクすると、おそらくより多くのシンボル ルックアップを、より多くのライブラリのシンボル テーブルを反復処理するように強制します。

于 2012-08-29T12:47:17.113 に答える