最終更新: mikk_ni3_92 2009年10月24日(土) 14:25:03履歴
ビルド、libファイル、dllファイル、exeファイルなどについてのメモ
ビルドツールは
【コンパイラ】
「ソースコード」から「オブジェクトファイル(「.obj」や「.o」)」を作成。
【コンパイラ】
「オブジェクトファイル」を受け取って、「静的ライブラリ(「.lib」や「.a」)」を作成。
【リンカ】
「オブジェクトファイル」と「ライブラリ」から「シンボリック参照」を解決。
→「実行可能ファイル(.exeファイル)」か「動的ライブラリ(「.dll」や「.so」ファイル)」を作成する。
※実行可能ファイルや動的ライブラリがリンクする側で、
それを生成するために使うライブラリがリンクされる側となる。
「exeファイル」のようなアプリケーション
→ 単体で起動可能。
「dll」などの動的ライブラリ
→ 実行可能ファイルだが、単体では起動不可。exeファイル起動時にメモリ上にロードされて使われる。
つまり、
ビルドツールは
- コンパイラ
- アーカイバ
- リンカ
【コンパイラ】
「ソースコード」から「オブジェクトファイル(「.obj」や「.o」)」を作成。
【コンパイラ】
「オブジェクトファイル」を受け取って、「静的ライブラリ(「.lib」や「.a」)」を作成。
【リンカ】
「オブジェクトファイル」と「ライブラリ」から「シンボリック参照」を解決。
→「実行可能ファイル(.exeファイル)」か「動的ライブラリ(「.dll」や「.so」ファイル)」を作成する。
※実行可能ファイルや動的ライブラリがリンクする側で、
それを生成するために使うライブラリがリンクされる側となる。
「exeファイル」のようなアプリケーション
→ 単体で起動可能。
「dll」などの動的ライブラリ
→ 実行可能ファイルだが、単体では起動不可。exeファイル起動時にメモリ上にロードされて使われる。
つまり、
- ビルドする時に「obj」「lib」などのオブジェクトファイル、静的ライブラリが必要。
- プログラムを実行する時に「dll」などの動的ライブラリが必要である。(「.exe」クリック実行ならlibはいらないという事)
Windows系OS | Unix系OS | Mac系OS | |
オブジェクトファイル | .obj | .o | .o |
静的ライブラリ | .lib | .a | .a |
動的ライブラリ | .dll | .so | .dylib |
実行可能ファイル | .exe |