4 プログラムの作成と実行

4.1 一連の流れ

それでは、実際に、プログラムを作成して、実行させて見ましょう。初心者が 最初に作るものとして、最も有名な'Hello World'というプログラムを作りま す。
  1. ターミナルの起動
    • ターミナル(端末)のアイコンをクリックして、ターミナルを立ち上げる。
  2. 作業ディレクトリーの作成と移動
    • mkdir hello」とタイプして、作業用ディレクトリーhello を作る。
    • 作業用ディレクトリーができているか、「ls」コマンドで確認し ます。すると「hello」が表示される。
    • cd hello」とタイプして、作業用ディレクトリーに移動する。
    • pwd」コマンドで、作業用ディレクトリーに移れたことを確認する。
  3. エディターの起動
    • emacs hello_world.c&」とタイプする。
    • すると、プログラムのソースを書くウインドウが現れる。
  4. プログラムの記述
    • エディターのウィンドウに以下のプログラムを書きましょう。
      		#include <stdio.h>
      		
      		int main(){
      
      		   printf("Hello World !!\n");
      
      		   return 0;
      		}
      
  5. プログラムの保管
    • プログラムを書き終わったならば、[file]メニューの[Save(current buffer)] を選択する。あるいは、フロッピーディスクアイコンをクリック して、ソースファイルを保管する。
    • ターミナル上で「ls」コマンドを打ち、ソースファイルが保管さ れていることを確認する。
  6. コンパイル
    • ターミナル上で「gcc -o aisatsu hello_world.c」と打ち込み、 先ほど作成したソースファイルをコンパイルする。
    • もし、コンパイルエラーが発生したら、ソースファイルを修正 する。
    • 実行ファイルができているか、「ls」コマンドで確認する。
  7. 実行
    • ターミナル上で「./aisatsu」と打ち込み、プログラムを実行させま す。
    • 'Hello World'と表示されれば、プログラムは動作は完璧です。

以上のプログラム作成の手順をまとめると、図2のようなフロー チャートになる。

図 2: プログラムの作成のフローチャート
\includegraphics[keepaspectratio,scale=1.0]{figure/all_procedure.eps}

4.2 コンパイルとは

プログラムを作成する場合、コンパイル5(gccコマンド)という不思議なステップがある。このステップについ て簡単に説明しておく。

コンパイルというのは、ソースファイル(ここではC言語)から実行ファイルを作る動作の ことを一般には言う。実際にはターミナル上で、

	gcc -o 実行ファイル名 ソースファイル名
とすれば、ソースファイルから実行ファイルができあがる。エラーが無ければ、ちゃんと 実行可能なファイルが作成される。「./実行ファイル名」とすれば、そのプログラ ムが実行される。

さて、この動作がなぜ必要なのであろうか?。ここで学習しているC言語のソースファイル の内容は人間が理解できるが、それはコンピューターは理解できない。そのため、人間が 理解できる言葉からコンピューターが理解可能な言葉に翻訳が必要で、コンパイルとはそ の作業のことである。要するに、プログラミング言語を機械語に翻訳しているのである。

以上の説明で大体良いが、正確には、機械語に翻訳するためには、コンパイルとリンクと 言う作業が必要である。それらの作業は、コンパイラーとリンカーが受け持っており、コ マンド「gcc」の作業は、図3のようになっている。通常、 コンパイルと言っているが、実際にはコンパイルとリンクを行っている。

オプションの「-o」を付けない、すなわち実行ファイル名無しで「gcc」を動 作させた場合、「a.out」という実行ファイルができあがる。この a は、 assembler out の略らしいが、実際には linker out である。

図 3: gccコマンドの作業内容
\includegraphics[keepaspectratio,scale=1.0]{figure/compile_process.eps}



ホームページ: Yamamoto's laboratory
著者: 山本昌志
yamamoto masashi
平成17年5月14日


no counter