SSブログ

コンパイルやビルドという作業 [プログラミング]

こんにちは、rollです。
プログラミングを行ううえでコンパイルやビルドという言葉に出会うことがあります。

コンパイルとは

英語だと compile で「編集する」などの意味らしいです。
結論から言うと、コンパイルとは
「人間に理解しやすいプログラミング言語で書いたプログラムを
PCが理解できる形に翻訳する作業」と、とらえてもらえれば大丈夫です。
なぜそんなことをしなければいけないのかは、下に詳しいコンパイルの流れを
まとめてみたので読んでみてください。

コンパイルの流れを書いてみると
「コンパイラ」というソフトウェアを用いて、プログラミング言語で記述された「ソースプログラム」を
「オブジェクトプログラム」と呼ばれる中間形式に変換する作業。
ここまでを言います。

例えば「C言語」で下のようなソースプログラムを用意したとします。
(ファイルの名前 HelloWorld.c)


/* Author : roll */
#include <stdio.h>

int main(int argc,char** argv) {
   printf("Hello,World!!");  //「Hello,World!!」の表示
   return 0;
}


コンパイルでは、これをオブジェクトプログラムに変換します。
PCが上のソースプログラムをそのままの形で理解してくれれば1番いいのですが
残念ながらPCは「0か1か」でしか理解してくれません…。
これが俗に言う「機械語(マシン語)」というやつです。
PCに仕事をさせたいときは本当は機械語で指示しないと理解してくれないのです…。
ですが人間にとって数字の羅列で動作を指示するのはとても労力がかかります。
ここでコンパイラの出番です!
人間が書いたソースプログラムはオブジェクトプログラムに変換されます。
この変換の時点で既に機械語に変換はできています。
では、これで実行可能ファイル(ロードモジュール)はできているのか?
…あともう少し作業が残っています。
それが「リンク」です。
リンクについては下の「ビルド」の説明の中で書こうと思います。

ビルドとは

英語だと build で「仕上げる,組み立てる.」などの意味らしいです。
結論から言うと、ビルドとは
「ソースプログラムをコンパイルした上で実行可能ファイルを
生成するために必要なリンクを行うまでの一連の作業」
と、とらえてもらえれば大丈夫です。
なので、コンパイルとビルドの違いは
コンパイル = ビルド - リンク
ビルド = コンパイル + リンク

…ということですね。

ビルドの流れを書いてみると
上で書いたようにコンパイルを行った後に「リンカ」というツールを用いて
複数のオブジェクトプログラムや静的リンクライブラリを(必要に応じて)結合して
実行可能ファイル(ロードモジュール)を作る一連の作業。
ここまでを言います。

このビルドという作業を経てやっと
実行可能ファイル(ロードモジュール)が出来上がります♪
(上のソースプログラムの例でWindowsの環境だと HelloWorld.exe)
これで晴れてコンソールの画面で「Hello,World!!」の出力を確認できます。
(下の画像では一部加工処理を施しています)

HelloWorld.png


では最後にまとめです。

コンパイルとは
「人間に理解しやすいプログラミング言語で書いたプログラムを
PCが理解できる形(機械語)に翻訳する作業」
ビルドとは
「ソースプログラムをコンパイルした上で実行可能ファイルを
生成するために必要なリンクを行うまでの一連の作業」
nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。