チャチャチャおもちゃの抹茶っちゃ

ゲームのこととかプログラミングのこととか。気が向いたら書く。ブログタイトルは友人が考えました。

【C言語】WindowsでC言語開発環境を構築する

目次

WindowsC言語開発環境を構築

最近ではプログラミング教育を情報や機械、電気電子系以外の学科でも取り入れることが増えているらしい。
学校でC言語を扱うときは、多くの人が親しみがあるであろう「Windows」系のOSではなく、「Linux」とかのUNIX系OSを使うことが多いのではないだろうか。
しかし、多くの人はLinuxをいれたパソコンなんてもっていない。ここでは、「学校のC言語の課題を家でやりたい!」という人が自宅のパソコンでWindows10を使っている人が、C言語開発環境を構築する方法を説明する。

環境構築までの流れ

  1. コンパイラをインストール
  2. PATHを設定
  3. 使用するテキストエディタ周りの話

なぜIDE統合開発環境)を使わないのか
C言語で開発をしている人の中には、EclipseVisual StudioなどIDEと呼ばれているものを使っている人も多いだろう。しかし、こういったものはエディタとしての機能のみでなくコンパイルなどもほぼ自動で行ってくれたり、便利な機能が多くついているがゆえに、本来知っておきたい知識を得ないままになってしまうことがある。実際、学校の課題などでは「端末」などのコンソールでコンパイル、実行をするように教わるのではないだろうか。ここではあくまで「コードを書く」→「コンパイルする」→「実行する」の流れを自分で行うことができるような環境構築を目指す。

コンパイラをインストールする

コンパイラとは

C言語とは、人間が読んで理解することのできる、いわゆる「高級言語」と言われるものである。ある定められた文法に従って英単語などをつなげることで命令を記述することが可能だ。しかし、これらの言語はそのままではコンピュータは理解することができない。そこで、「高級言語」から、機械の理解できる「機械語」へ翻訳するのがコンパイラだ。C言語コンパイラWindowsでは最初入っていないので、翻訳することができない。したがって、自分でインストールしてあげる必要がある。

リンカーやアセンブラの話
コンパイラについてざっくり説明したが、これではコンパイラを正しく説明したというには全く足りていない。とはいえ、ここではコンパイラの必要性がわかれば十分なので、この程度の説明にとどめておく。

コンパイラのダウンロード

コンパイラは一種類ではない。いくつか種類が存在するが、ここではメジャーでフリーなコンパイラである「MinGW」のインストールについて説明する。
まずはMinGWの公式サイトからインストーラーをダウンロードしてくる。
f:id:mattyan1053:20180731231504p:plain
すると、しばらくしてSourceForgeとかいうサイトに飛ばされて更に少し待つと自動的にダウンロードが始まるだろう。完了するのを待つ。

コンパイラのインストール

通常、Windowsでは新しくファイルをダウンロードすると「ダウンロード」フォルダに保存される。頑張って見つけ出そう。
mingw-get-setup.exe」を見つけたらダブルクリックして実行。すると次のような画面が出てくる。英語だが仕方ないのでこのまま進めていく。
f:id:mattyan1053:20180731232019p:plain
おとなしく右下の「Install」をクリックする。すると画面が移行するので、
f:id:mattyan1053:20180731232205p:plain
いくつかあるチェックボックスは自分に合うものを選ぼう。「Installation Directory」は変更しなくて良いとおもう。どうしても他の場所にインストールしたい人は変更しよう。「...also install ...」はGUIをインストールするかどうか。わからなければそのままでも良い。
次の丸いボタンはインストールするアカウントを聞かれている。とりあえずそのままで問題ないだろう。複数のユーザーがいてすべてのアカウントにインストールしたいときは右を選択する。
その下は「スタートメニュー」または「デスクトップ」にショートカットを使えるようにするか。これもお好みで。追加されるのはInstall Managerなのでチェックを外しても良いと思う。全部確認したら「Continue」をクリック。するとインストーラーのインストールが開始する。しばらく待とう。
f:id:mattyan1053:20180731232735p:plain
おわったようだったら「Continue」。すると「MinGW Installation Manager」が起動する。起動しなかったらスタートメニューやデスクトップアイコンから起動しよう。起動したら今回は「mingw32-base」と「mingw32-gcc-g++」にチェックを入れる。インストールするコンパイラの種類を選択していて、今回はベーシックインストールとC++コンパイラのインストールをしておく。
f:id:mattyan1053:20180731233336p:plain
選択したら左上のメニューバーの「Installation」→「Apply Changes」を選択。
f:id:mattyan1053:20180731233725p:plain
続けてこんな画面が出るので「Apply」を選択。
f:id:mattyan1053:20180731233747p:plain
するとコンパイラのインストールが始まる。しばらくじっと待とう。すべて完了したら「Close」をクリック。
f:id:mattyan1053:20180731234024p:plain
これでコンパイラのインストールが完了した。実際にCドライブ直下のフォルダを見てみると「MinGW」が追加されており、中に「bin」フォルダ、更にその中に「gcc.exe」などが入っていることが確認できる。
f:id:mattyan1053:20180731234409p:plain

PATHを設定する

これでコンパイラgcc」のインストールができた。これで学校の端末や参考書と同じように使えればよいのだが、まだ設定が完了していないので使えない。ためしに使おうとしてみる。

コマンドプロンプトを起動する

Linuxの「端末」だとかターミナルだとかいうののWindowsバージョンは、「コマンドプロンプト」というものがある。開き方は、「スタートメニュー」→「Windows システムツール」→「コマンドプロンプト」で開いてもいいし、そのまま検索して開いても良い。おすすめは「Windowsキー」+「R」で「ファイル名を指定して実行」を開き、cmdと入力すると一発で起動できる。
f:id:mattyan1053:20180731234900p:plain
次のような画面が出ればOK。
f:id:mattyan1053:20180731235145p:plain

gccを使ってみる

コマンドプロンプトが起動したら、gcc --versionと入力してみよう。次のようになるはずだ。

> gcc --version
’gcc’は内部コマンド、または外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

つまり、まだ「gccコンパイラは使えないということだ。何故かと言うと、コマンドプロンプトは現在いるフォルダーの中にあるプログラムか、予め登録されたプログラムしかいきなりは起動できない。登録されていないプログラムは、丁寧に場所を次のように記述してあげる必要がある。

> C:\MinGW\bin\gcc.exe --version
gcc.exe (MinGW.org GCC-6.3.0-1) 6.3.0
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

このように、「gcc.exe」の場所を丁寧に書いてあげれば起動することができる。

PATHを設定する

これで無事「gcc」を起動することができた。しかし、いちいちコンパイルするたびにフォルダーの階層をたどって「gcc」を見つけるのは面倒である。そこで先ほど言った「コマンドに登録」をする。
まずはコントロールパネルを開く。「スタートメニュー」から「コントロールパネル」と検索すれば起動することができるだろう。次のような画面がでる。まずは右上の「カテゴリ」のところをクリックして「小さいアイコン」か「大きいアイコン」に設定しよう。
f:id:mattyan1053:20180731235945p:plain
「システム」→「システムの詳細設定」をクリック。
f:id:mattyan1053:20180801000200p:plainf:id:mattyan1053:20180801000211p:plain
環境変数」をクリック。
f:id:mattyan1053:20180801000800p:plain
上の方で「Path」を選択し、下のほうでも「Path」を選択したあと「編集」をクリック。
f:id:mattyan1053:20180801000833p:plain
「新規」をクリックしたあと「gcc.exe」の場所を入力する。デフォルトの場所から変えていなければ、C:\MinGW\binにあるはず。
f:id:mattyan1053:20180801000934p:plain
あとは「OK」を連打していけば良い。
これで無事登録できたので、コマンドプロンプトで「gcc」を使うことができるようになった。

実際に試してみる

先ほどと同様にコマンドプロンプトを起動する(さっき起動したのがそのままだった場合は一旦閉じて起動しなおそう)。次にgcc --versionと入力してみる。

> gcc --version
gcc (MinGW.org GCC-6.3.0-1) 6.3.0
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

と表示されればOK。表示されなければどこかしら間違っていたということなので、設定をもう一度見直してみよう。
さて、今度は実際にコンパイルしてみる。次のようなコードを用意した。

#include <stdio.h>

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

おなじみのHello Worldプログラムである。これをメモ帳で作り「test.c」として好きなところに保存しよう。今回はDesktopに保存した。 次にコマンドプロンプトでデスクトップにアクセスする。Linuxと同様、ディレクトリ(フォルダー)の移動はcdを使うことで可能だ。Windowsではlsが使えないので代わりにdirを使う。

> cd C:\Users\<username>\Desktop\
> dir
(略)
2018/xx/xx xx:xx         81 test.c
(略)

このような感じだ。「test.c」と同じ階層にたどり着いたら、実際に「gcc」を使ってみよう。

> gcc -Wall -o test test.c
> test
Hello World!

というように、無事コンパイルできて実行もできたはずだ。これで実際の学校の機械と同じように作業することができる。

文字コードと改行コード

これで一見すべての環境づくりは終わったように見えるのだが、まだいくつか問題点がある。文字コードと改行コードの問題だ。

文字コード

「文字化け」を知っているだろうか。「譁 ュ怜喧縺」とか表示されてしまうあれだ。実はWindowsUNIX系OSでは主に使っている文字コードが異なるので、家で書いたコードを学校で開くと表示がおかしくなってしまうことがある(特に日本語)。少し詳しく言うと、Windowsで主に使っている文字コードは「Shift-JIS」というものだが、多くのUNIX系OSでは「UTF-8」というのが主流なようである(俗に言うUnicode)。基本的には「UTF-8」を使っておくのが望ましいだろう(実はこのWebページもUTF-8)。

改行コード

こちらもWindowsUNIX系OSでは異なるものを使っている。Windowsでは「CRLF」という二文字を改行として扱っているのに対し、UNIX系OSでは「LF」の一文字を改行として扱っている。したがって、Windowsで改行したものをUNIX系OSで読み取ると余計な文字が一つ多いように見えるし、UNIX系OSで書いたものをWindowsで読み込むと正しく改行されないという問題が発生する。

メモ帳の問題点

メモ帳は保存するときに文字コードを指定することができる。しかし、デフォルトの文字コードはShift-JISである上、保存画面の右下という少しわかりにくいところにあるようだ。また、改行コードを変更することができなかった(最近変更できるようになったらしい?)。また、メモ帳は「int」などC言語でよく使う文字列を色付けしてくれないので、ソースコードが見づらいという問題点もある。

別のテキストエディタを利用する

メモ帳はC言語のコーディングには使いづらいことを説明した。ではどのようなものを使うのが良いのだろうか。
学校などでは「emacs」や「Vim」を使わせることが多いのかなと思う。これらにはWindows版も存在し、当然文字コードや改行コードを設定することが可能だ。ここではこの2つのエディタについてコードの変更方法を掲載しておく。

emacs

C:\Users\<username>\.emacsの中身に

;; デフォルトの文字コードと改行コード
(set-default-coding-systems 'utf-8-unix)

を追加しておくことでデフォルトの文字コードと改行コードを指定できるようだ(emacs使いではないので詳しくはない)。

Vim

C:\Users\<username>\.vimrcの中身に

set encoding=utf-8
set fileencoding=utf-8
set fileformat=unix

を追加しておく。デフォルト設定がここなのでいろいろいじると便利になったりする。「ESC」キーが遠いのでimap <C-j> <esc>とかおすすめ。

他のテキストエディタ

もちろん、上記のテキストエディタを使わなければいけないという理由はない。他にも有名なものとしてAtomなどがあり、当然文字コード及び改行コードが変更可能だ。個人的にはWindowsと同じMicrosoftの「Visual Studio Code」がWindowsによくあっていて気に入っているのでこれを使っている。多くのテキストエディタは上記2つ同様設定ファイルを書き換えることで扱う文字コードを変更できるようだ。
参考 - 【VSCode】VSCodeの文字コードと改行コードを変更する

まとめ

以上、Windows10でのgcc導入について説明した。PATH指定はgccに限らずコマンドから使いたいアプリケーションを登録するのに便利なので覚えても良いと思う。というか結構これしないと使わせてくれないやつとかあったように思う。
インストールしたらすぐ使えるわけではないというのが少しやりにくいかもしれないが、落ち着いて対処してほしい。