ビルドとコンパイルの違い
友達の話を聞いていて、ビルドとコンパイルの違いがよく分からなかったので調べてみた.
詳しくは以下の記事を参照しました.itpro.nikkeibp.co.jp
コンパイル
ソースコード(C言語などの高級言語で記述されたファイル)からオブジェクトファイル(マシン語)に変換する作業
本来C言語等のプログラミング言語は人が理解できるように記述された言語であり、機械はマシン語しか理解することができない.そのため機械が理解できるようにプログラミング言語をマシン語に翻訳してあげる作業がコンパイルである.
リンク
オブジェクトファイルの参照関係を結びつける.「ライブラリ」から関数を呼び出すためのファイルと結びつける.
例えば以下の「Hello world!」を出力するコードでは、printf関数は別のファイルに定義されている.このprintf関数が定義されている外部ファイルと下記のソースファイルを結びつける(リンクする)ことで、関数を利用できるようになる.このように複数のファイルを結びつける作業がリンクである.
#include <stdio.h> int main(void) { printf("Hello world!"); return 0; }