2017-05-29 4 views
0

私はCでリンカの関連性と仕事を理解していますが、バイナリでは何が起こっていますか?リンカーは、例えば、DLLからバイナリをコピーしていますか?または単にこのライブラリ関数をバイナリで参照してその関数を実行していますか?リンカーは、オブジェクトコードをコピーするか、単にそれを参照しますか?

+0

参照されている共有ライブラリでない限り、実行可能ファイルにコピーします。 –

+0

DLLには、どの機能が別のモジュールに存在するかを示すインポートテーブルがあります。リンカーはそのテーブルを作成します。 OSローダーがそれを解釈します。 –

答えて

4

DLLの場合、リンカはDLL内の関数への参照を実行可能コードに格納するだけで、実行時に解決されることが望まれます。静的リンクの場合、リンカーはライブラリのコードを実行可能ファイルにコピーし、リンク時にすべてが解決されます。

本当に興味があるリンカについての完全な話を知りたい場合は、https://www.amazon.co.uk/Linkers-Kaufmann-Software-Engineering-Programming/dp/1558604960をご覧ください。これは素晴らしい本です。

関連する問題