リンカーとライブラリ

使用されない対象物の削除

共有オブジェクトやその依存関係によって使用されない、関数やデータを保持することは無駄です。この対象物によって共有オブジェクトが肥大し、不必要な再配置のオーバーヘッドおよびページング動作が生じます。使用されない依存関係への参照も無駄です。これらの参照によって、他の共有オブジェクトの不必要な読み込みと処理が生じます。

リンカーのデバッギングトークンのどれか、または基本トークンの -D basic を使用してリンク編集を行うと、使用されない対象物が表示されます。使用されていないと判断された対象物は、リンク編集から削除するか、リンカーの -z ignore オプションを使用して排除してください。

次の場合に、リンカーは再配置可能オブジェクトのセクションを使用されていないと判断します。

-z ignore オプションを使用して構築された共有オブジェクトからは、上の条件に一致するセクションは排除されます。共有オブジェクトの外部インタフェースを定義することによって、また -xF などのコンパイラオプションを使用してセクションの内容を改善することによって、リンカーのセクション排除能力を向上させられます。再配置可能オブジェクトの割り当て可能なセクションすべてが排除可能な場合、そのファイル全体がリンク編集から削除されます。

共有オブジェクトが生成される際に結合されない依存関係があった場合、リンカーはその依存関係が使用されていないと判断します。-z ignore オプションを使用して構築された共有オブジェクトには、使用されていないこれらの依存関係は記録されません。