第3回
ソースの入力から完成まで

コンパイル、リンク、ビルド……?!

さて、今「コンパイル、リンク、ビルド」といった言葉を使いました。技術者の日常的な会話では「~をコンパイルする」「~をビルドする」といった表現がよく使われます。また「メイクする」(略して「メイクる」なんていう表現もあります)という言葉もよく使われます。これらは、実質的にどう異なるのでしょう?

用語の定義を明確に

先述したように、ソースコードからプログラム(実行形式ファイル)を生成するには、コンパイルとリンクという2つの処理工程が必須です。ここで、言葉の問題を明確にしておきましょう。

・コンパイル(compile)
1)ソースコードから中間言語ファイルを生成する処理。
2)ソースコードから実行形式ファイルを生成する処理。

・リンク(link)
中間言語ファイルを結合して実行形式ファイルを生成する処理。

・ビルド(build)
コンパイルとリンクを連動させ、ソースコードから実行形式ファイルを自動的に生成する処理。

・メイク(make)
ユーザー(開発者)の設定した規則に沿ってコンパイルとリンクを実行させ、ソースコードから実行形式ファイルを効率的に生成する処理。

ビルドとメイク

コンパイルという言葉には、上記1)と2)の2つの意味があります。2)の意味は「ビルド」とほぼ同義で、これは比較的よく使われます。

ビルドとメイクの違いは、以下のように捉えて構わないでしょう

・ビルド
統合環境のプロジェクトで複数の(ユーザーからは見えないものも含む)ソースを管理させ、それらのコンパイルとリンクをすべて統合環境で自動的に制御して実行形式ファイルを生成させる処理。

・メイク
ユーザー(開発者)が各種ソースや中間言語ファイルの関連を明示し、意図的にコンパイラリンカを制御して効率的に実行形式ファイルを生成させる処理。

要するにビルドは統合環境による自動処理を指し、メイクはコマンドラインによる明示的・意図的な処理を指すということです。

メイクはコマンドライン版の処理では非常に有効です。GCCやLSI-CにはMakeというプログラム、VC++ではNMAKE.EXEというプログラムが用意されています。これらの使い方については、回を追って複雑なプログラムを組み上げる段階で紹介しましょう。