Cプログラミング入門

第4回Chapter 2 Cプログラミング最初の一歩~Hello Worldからはじめよう(2)

ソースファイルのコンパイル

プログラムが入力できたら、作成したhello.cをgccコマンドを使ってコンパイルします。

リスト2.1  hello.c(前回より)
#include <stdio.h>

int
main()
{
  printf("Hello World\n");
  return 0;
}

次の図2.2の実行例のように「gcc hello.c」というコマンドラインを入力し、[Enter]キーを押せばコンパイルが開始されます。

コンパイルが正常に行われると、次の行にシェルのプロンプト$が表示されます。このプロンプトが確認できればコンパイルは正常に行われています。

図2.2 実行例:hello.cのコンパイル
$ gcc hello.c
$

コンパイル時にエラーが発生した場合ば、次の図2.3の実行例のように、プロンプトが表示される前に何らかのエラーメッセージが表示されます。

図2.3 実行例:hello.cのコンパイル時にエラーが発生した場合
$ gcc hello.c
hello.c:6:10: missing terminating " character
$

このような場合は、再度hello.cをテキストエディタで開き、プログラムの入力ミスを修正してファイルを保存し、もう一度gccでコンパイルしてください。

ちなみに図2.3のエラーメッセージは、hello.cの6行目のprintf()内の、ダブルクォート"が閉じられていないために発生しています。

正常にコンパイルが行なわれると、hello.cと同じディレクトリにa.out[1]という実行バイナリファイルが作成されます。lsコマンドを使って、a.outファイルが作成されていることを確認してください。

図2.4 実行例:a.outファイルの確認
$ ls
a.out  hello.c
$

プログラムの実行

このa.outを図2.5の実行例のようにして実行し、"Hello World"というメッセージが画面に表示されることを確認してください。a.outの実行時には、頭に「./」を付けてキー入力する必要があります。

図2.5 実行例:a.out(hello.c)の実行
$ ./a.out
Hello World
$

ここまでできたら、hello.cの中の"Hello World\n"の文字列を好きな他のメッセージに変更し、再度gccでコンパイルし、a.outを実行してここまでの手順を再確認してください。

a.outやPATHについて

gccでコンパイルを行うと、a.outというファイル名の実行バイナリファイルがカレントディレクトリ(現在自分がいるディレクトリ)に作成されました。しかし、ここで単純にa.outとコマンド入力してもa.outを実行することはできません。

UNIX(Linux)は、DOS(Windowsのコマンドプロンプト)とは違い、カレントディレクトリにはPATHが通っていないのが普通です。したがって、a.outを実行するには、カレントディレクトリ上にあるファイルであることを明示するため、頭に./を付けて./a.outとコマンド入力する必要があるのです。

.はカレントディレクトリを表す記号、/はディレクトリの区切りを表す記号です。a.outのように、一般ユーザが自分で作成した実行バイナリファイルを./を付けずにそのまま実行したい場合は、実行バイナリファイルを自分のホームディレクトリの下のbinディレクトリ$HOME/binに配置し、$HOME/binをPATHに追加して使うようにします。

このほかに、PATHに.を含めるように設定変更してしまうという方法もありますが、そのような設定はセキュリティ上推奨されないため行わないでください。

おすすめ記事

記事・ニュース一覧