コンパイルと実行

こんにちは、めのんです!

今回はお詫びから始めないといけません。
前回、うっかりプログラムのコンパイルと実行の方法を書くのを忘れていました。
「次回はCのバージョンについて解説する」とお伝えしたんですけど、そういうこともあってコンパイルと実行の方法を先に解説することにしました。
予定が変わってしまって申し訳ありません。

それでは早速解説に入ります。

コンパイル

まずはコンパイルからです。

PHPの場合はソースファイルを用意すれば即実行することができましたが、Cではコンパイルという作業が必要になります。
世の中にはPHPと同じようなCのインタープリタもあるんですけど、かなり特殊だと思った方がいいです。
この講座で使うことを前提としているGCCもコンパイラですのでコンパイルが必要です。

コンパイルするにはターミナルで次のコマンドを実行します。

gcc hello.c

「hello.c」というのは前回作ったソースファイル名です。
別のソースファイルを使う際には適宜読み替えてくださいね。

最後が「.c」で終わるのはCのソースファイルになります。
標準規格ではとくに決まってはいなかったと思いますが、ほとんどのコンパイラは「.c」で終わるファイルをCのソースファイルと認識します。

先ほどのコマンドを実行してエラーがなければ、だまってコンパイルが終了します。
本当に何も表示されずに終わるので、初めての方は不安になるかもしれませんね。
でも、何も言われなければ無事にコンパイルできているはずです。

コンパイルが無事に終われば実行ファイルができあがっています。
実行ファイルのファイル名はWindowsとそれ以外で違うので注意が必要です。

Windowsでは「a.exe」という名前の実行ファイルができあがります。
CygwinでもMSYS2でも同じです。
macOSやLinuxでは「a.out」という名前の実行ファイルができあがります。
Windows上のWSLでも「a.out」になります。

「a.exe」や「a.out」はあまりにもそっけない名前ですので、もう少しわかりやすい名前の実行ファイルを生成するには「-o」オプションを使います。

gcc -ohello hello.c

上のように、コンパイルする際に「-o」のあとに生成したい実行ファイル名を指定します。
「-ohello」でも空白を入れて「-o hello」でもかまいません。
「-o」オプションで「hello」という名前を指定した場合、Windowsでは「hello.exe」が、macOSやLinuxでは「hello」が生成されます。

プログラムの実行

コンパイルが成功すれば次は実行してみましょう。

Windowsの場合、コンパイルの結果できあがった実行ファイル名が「a.exe」の場合はターミナルで次のように実行します。

./a

「hello.exe」ができあがった場合は

./hello

としてください。
このように、Windowsでは拡張子の「.exe」は省略できます(付けても実行できます)。

macOSやLinuxでは実行ファイル名をそのまま指定します。
実行ファイル名が「a.out」であれば、

./a.out

「hello」であれば、「a.out」のところを「hello」に変えるだけです。

WindowsでもmacOSでもLinuxでもそうなのですが、カレントディレクトリのプログラムを実行する際には「./」を付けるのを忘れないでくださいね。

以上でコンパイルと実行の解説を終わります。
今回は簡単な解説にとどめましたが、いずれ機会があればコンパイルオプションのもう少し詳しい説明をやってみたいなと思います。

それでは次回こそはCのバージョンについて解説しますのでご期待ください。