C・ビルドツールの用語集(9語)
C・ビルドツールに関する Linux 用語を、読み・意味・補足つきでまとめました。
Makefileめいくふぁいる
make コマンドが読む、ビルド手順を記述した設定ファイル。
ターゲット・依存ファイル・実行コマンドの組を並べて書きます。make はファイルの更新時刻を比較し、変更があった部分だけを再ビルドするため無駄がありません。コマンド行の字下げはスペースではなくTAB文字でなければならず、間違えると Missing separator エラーになる点が初心者のつまずきどころです。
オブジェクトファイルおぶじぇくとふぁいる
ソースを機械語へ変換した、リンク前の中間ファイル(.o)。
gcc -c で生成され、拡張子は .o です。機械語にはなっていますが、他のファイルやライブラリとリンクするまでは単体では実行できません。大きなプログラムをソースごとに .o へ分けておくと、変更したファイルだけ作り直せて効率的です。
コンパイルこんぱいる
人が書いたソースコードを、CPUが実行できる機械語へ翻訳する処理。
広義にはソースから実行ファイルを作る一連の流れ全体を指し、狭義にはC言語をアセンブリへ翻訳する工程を指します。gcc はこの翻訳を担うコンパイラの代表で、前処理・コンパイル・アセンブル・リンクの4段階を内部で順に実行します。
ターゲット/依存関係たーげっと/いぞんかんけい
Makefileで「作るもの」と「そのために必要なもの」を結ぶ関係。
Makefileの各ルールは「ターゲット: 依存ファイル」の形で書き、ターゲットは生成したい成果物(実行ファイルや .o)、依存ファイルはそれを作るのに必要な入力です。make は依存ファイルがターゲットより新しいときだけコマンドを実行します。clean のように実ファイルを作らない便宜的なターゲットもあります。
ブレークポイントぶれーくぽいんと
デバッガで、プログラムの実行を一時停止させる地点。
gdb の break コマンドで、行番号や関数名を指定して設定します。実行がその地点に達すると一時停止し、print で変数の値を見たり、next で1行ずつ進めたりして内部状態を調べられます。原因を絞り込むのに役立ち、調査が済んだら continue で実行を再開します。停止位置を有効にするには -g 付きでビルドしておく必要があります。
ヘッダファイルへっだふぁいる
関数や定数の宣言をまとめた、#include で取り込む .h ファイル。
stdio.h や math.h のように、関数の宣言・マクロ・型定義を記述したファイルです。前処理の段階で #include の行がヘッダの中身に置き換えられます。宣言だけを提供するもので、関数の実体はライブラリ側にあるため、使う関数によっては別途リンク(-lm など)が必要になります。
リンクりんく
複数のオブジェクトファイルやライブラリを結合し、1つの実行ファイルを完成させる工程。
コンパイルで生成された .o ファイルどうしや、printf などライブラリ側にある関数の実体を結びつけて実行ファイルを作ります。この作業を行うプログラムをリンカと呼びます。関数の実体が見つからないと undefined reference という未定義参照エラーになります。
実行ファイルじっこうふぁいる
そのまま起動して動かせる、完成した機械語のプログラム。
リンクまで終えて生成される最終成果物で、Linuxでは ./名前 のようにパスを付けて起動します。gcc は出力名を省略すると a.out という名前で作り、-o オプションで任意の名前を指定できます。実行するにはファイルに実行権限(x)が必要です。