3.C言語をターミナルで実行する

いよいよ実行です。

 

まず、ターミナルを開きます。

ターミナルは、Finder」アプリケーション」→「Launchpad.app」→「その他」の中にあります。

やることは以下のことだとわかりました。

 

1.プログラムファイルを保存した場所に移動する

2.保存したプログラムファイルをコンパイル(イメージ:機械語に翻訳)する

3.コンパイルしたファイル(翻訳されたもの)を実行する

こうしてみると、簡単そうにみえますが、意味もわからずやってもたいていうまくいきません。一つひとつ調べながらここまできましたが、最後、またなぜかうまくできません。

私はここまでくるのに相当の根気と気力を使い果たし、息も絶え絶えになってしまいました。もう当初の簡単に「できたよ〜」と息子に告げるというもくろみは夢幻となり、逆に息子に助けを求めるより他ありませんでした。

ここから、息子にバトンタッチです。

 

まず、エディタで書いたものを保存した場所に移動します。Desktopに保存したのでそこに移動します。

$ cd ~/Desktop/

ここで、~/とは、ホームディレクトリという意味です。

参考:http://wa3.i-3-i.info/word13657.html

 

次に、コンパイルです。gccコマンドで、○○.cをコンパイルします。○○.cは保存したときにつけたファイルの名前で、C言語を示す末尾である.cとなっている必要があります。hello.cとつけたとして、以下でコンパイルします。

$ gcc hello.c

コンパイルされたファイルは、a.outという名前でできているので(ここで別の名前をつけるやり方もある)、確認するには、lsコマンドというもので確認してみます。

$ ls

すると、できていればa.outというものと、先に保存しておいたhello.cも見つかります。

 

そして、最後実行です。./a.out と入力します。

$ ./a.out 

実行するには、ファイルのパス名を入力すればよいので、./というのは、「相対パス」で同じ階層にあるからです。これも失敗してわかったのですが、元のプログラムファイルと、コンパイルしたものは、同じ階層にある必要があります。フォルダを作っておいて、その中に二つとも入れるようにすると実行しやすいかもしれません。

相対パス指定のお約束

・同じ階層にあるものは、そのままファイル名か「./ファイル名
・下の階層にあるものは、「./フォルダ名/ファイル名
・上の階層にあるものは、「../ファイル名
・2階層上にあるものは、「../../ファイル名
・1階層上にあるフォルダの中のファイルは、「../フォルダ名/ファイル名

参考:http://www.shoshinsha.com/hp/1hour/know/pass.html

すると・・ターミナルに

Hello, World

の文字が!!やったー!思わず、息子も私に抱きついてきて、二人で喜び合いました。

たった一行出すのに、こんなに苦労&感動するなんて・・

息子は、ラズベリーパイを少しやっていたせいか、この辺りのことをなんとなく理解していて、私よりスムーズに理解していました。遊んでいるだけかと思っていたんですが、やっぱり勉強になるんですね。

めでたし、めでたし。

他に参考にしたサイト

http://www.gi.ce.t.kyoto-u.ac.jp/user/susaki/c/kihon_compile.html