2

位置独立コードをスタティック ライブラリに配置するとどうなりますか? (特に、x86-64 では)

つまり、いくつかの.oファイルが PIC で生成され、.aファイルに配置されます。これ.aは、通常どおり最終的な実行可能ファイルに静的にリンクされます。

動作しているように見えますが、これを行う意味はありますか? なんで?

最終的なアドレス計算は何をしますか? (リンク時? 実行時?)

ありがとうございました

4

1 に答える 1

0

PIC システムの IIRC では、すべてのグローバル変数が PIC を介してアクセスされます。

PIC の全体的な考え方は、コード内のすべてのグローバル アクセスではなく、単一のテーブル (GOT) のみを調整する必要があるということです。

コード自体は、GOT を介してアクセスするため、位置に依存しません。GOT の位置 (命令のアドレスを基準とする) は、最終的なリンク時にエンコードされます。

なのでミ​​ックスです。一部は最終リンク中に行われ (GOT オフセットのコーディング)、一部は起動時に行われ (GOT の再​​配置/修正)、一部は行われません (コードの再配置)。

于 2012-08-20T10:46:08.330 に答える