にわとりプログラマーの備忘録

覚えたことをすぐ忘れてしまう、自分のための備忘録ブログです。

ビルドとコンパイルの違い

友達の話を聞いていて、ビルドとコンパイルの違いがよく分からなかったので調べてみた.

詳しくは以下の記事を参照しました.itpro.nikkeibp.co.jp

コンパイル

ソースコードC言語などの高級言語で記述されたファイル)からオブジェクトファイル(マシン語)に変換する作業

本来C言語等のプログラミング言語は人が理解できるように記述された言語であり、機械はマシン語しか理解することができない.そのため機械が理解できるようにプログラミング言語マシン語に翻訳してあげる作業がコンパイルである.

リンク

オブジェクトファイルの参照関係を結びつける.「ライブラリ」から関数を呼び出すためのファイルと結びつける.

例えば以下の「Hello world!」を出力するコードでは、printf関数は別のファイルに定義されている.このprintf関数が定義されている外部ファイルと下記のソースファイルを結びつける(リンクする)ことで、関数を利用できるようになる.このように複数のファイルを結びつける作業がリンクである.

#include <stdio.h>
 
int main(void)
{
    printf("Hello world!");
    return 0;
}

ビルド

コンパイルやリンクを一度に実行し、実行ファイルを作成すること(IDEなどが出てきたことで、生まれた言葉)

結論

つまりコンパイル∈ビルド であり、コンパイルやリンクなどの作業を一連の流れとしてまとめた、一つの作業がビルドということである.

IDEは便利だけど、それ故に仕組みをちゃんと理解できていない人になってしまう可能性もあるのでそこら辺はしっかりと自分で勉強する癖を付けていきたいです!