c言語のソースコードが実行可能になるまでの流れ
プリプロセス
概要
コンパイル処理において、プリプロセッサ (preprocessor) とは、コンパイラがソースコードをコンパイルする前に、一旦ソースコードに前処理を施すためのプログラムである。プリプロセッサによって実行される命令は「プリプロセッサ指令」(プリプロセッサディレクティブ)などと呼ばれ、処理自体は「プリプロセス」(preprocess) と呼ばれる。
プリプロセッサは、その名の通り、コンパイラによるソースコードの字句解析や、構文解析、バイナリコード生成などよりも前に実行される。プリプロセッサでは、主に次のような処理が行われる。
ソースコード中にヘッダやソースファイルを取り込む ソースコード中に書かれたマクロを置き換える コンパイル対象となるソースとそうでない部分を指定する 処理系ごとの動作を指定する
ヘッダ取り込み
標準ライブラリの機能を使うとき、プログラムの先頭で「#include
プログラムの規模が大きくなると、その一部の機能をある程度の単位でまとめるのがプログラミングの定石である。Cでは、機能を提供する側がその仕様(関数のプロトタイプ宣言やマクロによる定数定義など)をヘッダとしてまとめ、機能を使う側がそれを取り込んで(インクルードして)使用する。
標準ライブラリで提供されているヘッダを使用する場合は「#include
コンパイル
概要
C言語で書かれたソースプログラムは、計算機は直接には解釈・実行できないので計算機が実行できる形式(機械語、または実行可能形式とかバイナリプログラムと呼ばれる)に変換したものを作成する作業を行う。この変換を行ってくれるソフトウェアをコンパイラと呼び、コマンドとしてUNIX標準ではccが用意されている。コンパイルされた結果、アセンブリ言語で書かれたプログラムとなる。
アセンブリ言語とは、0と1で構成される機械語を、人間に理解できるように英数字で表現した言語のこと。原則として機械語の1つの命令に付き、1つの文字列(ニーモニック)が割り当てられているため、それらを利用することでプログラミングする。C言語などの高級言語に対して低級言語と呼ばれ、ソースコードは記述しにくいが、サイズが小さく、実行ファイルの実行速度も速い。
リンク
概要
(複数の)オブジェクトプログラムは、リンケージエディタ(linkage editor)に よって連結編集され、1つの実行可能なプログラムにまとめられる。 最終的に出来上がったプログラムのことを、実行形式(executable)という。 連結編集のことはリンク(link)ともいい、リンケージエディタのことを リンカ(linker)ということもある。
参考
プリプロセッサでプログラムの質を向上させよう (1/4):目指せ! Cプログラマ(16) - @IT
ハローワールド徹底解説 - Qiita