C言語本格トレーニング

ターミナルのプログラミング環境

Linux, FreeBSD, macOSといったUNIX系のOSで共通で使われている、C言語コンパイラのclangを使ったコンパイル方法について解説します。clangは比較的新しいC言語コンパイラで、昔の環境ではgccというコンパイラが使われていました。本書で扱っている内容に関しては、どちらを使用しても同じように学習が進められます。

多くのLinuxのディストリビューションやFreeBSDでは、インストール直後からgccまたはclangが使えるようになっています。macOSの場合は、Xcodeをインストールすれば、自動的にgccやclangなどの開発ツールがコマンドラインから使用できるようになります。

Ubuntu LinuxやFedora Linuxの場合は、ランチャーから「Terminal」を検索して実行します。

macOSの場合は、Finderで「アプリケーション」フォルダの中の「ユーティリティ」フォルダの中にある「ターミナル」をダブルクリックして起動します。

すべてのプロジェクトを格納しておくための作業用のフォルダを、ホームディレクトリの下に作成します。次のコマンドを入力して、ホームディレクトリに移動してください。

cd

【解説】UNIXのcdコマンド (Change Directory) は、引数なしで実行するとホームディレクトリに移動します。

ホームディレクトリに「cproj」という名前のフォルダを作成して、その中に移動します。次のコマンドを実行してください。

mkdir cproj
cd cproj

【解説】mkdirコマンド(Make Directory)は、指定した名前のディレクトリを作成するコマンドです。

cprojフォルダの中に、個々のプロジェクト用のフォルダを作成します。次のコマンドを実行してください。「HelloWorld」というフォルダ名は、新しいプロジェクト用の名前に適宜変えてください。

mkdir HelloWorld
cd HelloWorld

Visual Studio Code, vi, Vim, Emacsなどのテキストエディタを使用してプログラムを入力し、上記の手順で作成したプロジェクト用フォルダの中に、ソースファイルを保存します。ここでは、main.cという名前で保存されていることを前提に説明します。

次のコマンドを実行すると、コンパイルが実行されます。clangの代わりにgccを使う場合には、コマンド名だけ変更すれば、コンパイルできます。

clang main.c

コンパイルに成功した場合、画面にはとくに何も表示されません。成功すれば何も表示されず、コンパイルエラーが出た場合だけエラー内容が表示されるのが、UNIXのお約束です。lsコマンドでファイルの一覧を見ると、「a.out」という実行ファイルができていることが確認できます。

実行ファイルの名前を指定する場合には、「-o」オプションを指定します。次の例では、「hello」という名前で実行ファイルが作られます。

clang -o hello main.c

実行ファイル名を入力して、実行してみましょう。実行ファイルの名前の先頭に、カレントディレクトリを示す「./」が必要です。「./」と「a.out」の間にスペースを入れてはいけません。

./a.out

実行結果は、ターミナルの画面上に直接表示されます。

コンパイルできずにエラーが発生した場合には、問題のある箇所の行番号が表示され、エラー内容が英語で説明されます。

コンパイル時に「-Wall」オプションを指定しておけば、少し問題がありそうな場所に警告を出してくれるようになります。

clang -Wall main.c

「警告」が発生した場合には、注意が必要である箇所に「warning」という文字を出して、コンパイラが「警告」してくれます。

コンパイルは成功してるので実行はできますが、何かしらの問題(上の例だと変数aを宣言しているのに使い忘れている)があることを教えてくれている状態ですので、できる限り対処したほうが良いでしょう。