MinGW の簡単な使い方

MinGW は簡単に言うと, Windows で使える GCC(コマンドラインから使える gcc, g++, gfortran などのGNU コンパイラコレクション)です。ここでは,初めて PC 実習室環境(HEROIC 2021)の Windows で MinGW を使う人向けに,簡単な使い方を示します。

基本の gcc 編

1. Windows PowerShell(またはコマンドプロンプト)の起動

「スタート」から Windows PowerShell を探して起動します。(コマンドプロンプトでも可。)

2. メモ帳の起動

PowerShell  を起動したら,(以下ではプロンプトが C:\Users\user となっていますが,PC 実習室では H:\ または H:\_redirected\Document と読み替えてください。すみません。)

notepad

と打ち込んでエンターキーを押し,「メモ帳」を開きます。([スタート] から「メモ帳」を探してクリックして起動してもいいです。)

3. C プログラム文の作成と保存

メモ帳に以下のプログラム文を書いて,「hello.c」というファイル名で保存します。(メモ帳の「ファイル」メニューから保存してください。)

#include <stdio.h>

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

4. C プログラムのコンパイルと実行

作成したプログラム文を「hello.c」というファイル名で保存したら,PowerShell のプロンプトに

gcc -o hello hello.c

と打ち込んでエンターキーを押し,コンパイルします。エラーなくコンパイルできたら,

.\hello

と打ち込んでエンターキーを押し,出来上がったプログラムを実行します。実行結果が以下のように表示されます。

Hello, C!

基本の g++ 編

1. Windows PowerShell(またはコマンドプロンプト)の起動

「スタート」から Windows PowerShell を探して起動します。(コマンドプロンプトでも可。)

2. メモ帳の起動

PowerShell  を起動したら,(以下ではプロンプトをカスタマイズしてます。自分のと違っても気にしないでください。ごめんなさい。)

notepad

と打ち込んでエンターキーを押し,「メモ帳」を開きます。([スタート] から「メモ帳」を探してクリックして起動してもいいです。)

3. C++ プログラム文の作成と保存

メモ帳に以下のプログラム文を書いて,「hello.cpp」というファイル名で保存します。(メモ帳の「ファイル」メニューから保存してください。)

#include <iostream>
using namespace std;
int main()
{
    cout << "Hello, C++!" << endl;
    return 0;
}

4. C++ プログラムのコンパイルと実行

作成したプログラム文を「hello.cpp」というファイル名で保存したら,PowerShell のプロンプトに

g++ -o hello hello.cpp

と打ち込んでエンターキーを押し,コンパイルします。エラーなくコンパイルできたら,

.\hello

と打ち込んでエンターキーを押し,出来上がったプログラムを実行します。実行結果が以下のように表示されます。

Hello, C++!

日本語出力が字化けする場合の対応

Windows PowerShell やコマンドプロンプトでは,デフォルトの日本語コードは Shift JIS ですが,現在のメモ帳では,UTF-8 でしか保存できません。そのため,以下のような日本語を含むプログラム helloj.c を Windows PowerShell やコマンドプロンプトでコンパイル・実行すると,字化けします。

#include <stdio.h>

int main()
{
    printf("こんにちは, C!\n");
    return 0;
}

chcp 65001 と打つ

このような場合は,Windows PowerShell のコードページを UTF-8 にするコマンド
chcp 65001
を打つと,その後は字化けしなくなります。

Cmder (chcp 65001 済) を使う

日本語字化け対策として Cmder を使う,という手もあります。

PC 実習室の Windows には,Cmder  というターミナルプログラムもインストールしてます。Cmder は,UNIXライクな機能が追加されたコマンドプロンプトだと思えばいいです。センター PC 実習室では Cmder の初期設定として
chcp 65001
を入れていますので,ユーザが設定しなくてもデフォルトで UTF-8 が字化けしないで表示されます。下の図を参照。

少しだけ応用編:Visual Studio Code を使って

ちょっとしたミスでコンパイルが成功しない場合は,プログラム文のエラー部分を探して修正してコンパイル… といった作業を繰り返さないといけません。

そこで,なるべく簡単にプログラム文の作成,コンパイル,実行ができるように,メモ帳ではなく別のテキストエディタである Visual Studio Code を使った例を示します。以下に説明するように,最初に一回設定すれば,あとはワンクリックでプログラム文のコンパイルと実行ができるようになります。また,プログラム文作成中のミスも,Visual Studio Code がそれとなく指摘してくれるので大変便利です。

Visual Studio Code の初期設定

Visual Studio Code は,インストールしたばかりだと,メニューも日本語になっていませんし,プログラミングに便利な拡張機能もインストールされていません。(Emacs のようなテキストエディタであれば,管理者がシステムワイドに設定できますが)Visual Studio Code の場合は,ユーザ各自で(最初に1回だけ)設定する必要があります。以下のページを参考にします。

  1. まず,[スタート] から Visual Studio Code を探して起動してください。メニューがまだ英語のままであることを確認したら,終了します。
  2. Windows の場合は,以下の9行をコピーし,Windows PowerShell に貼り付け,エンターキーを押して実行します。
code --install-extension ms-ceintl.vscode-language-pack-ja --force
code --install-extension ms-vscode.cpptools --force
code --install-extension formulahendry.code-runner --force
code --install-extension streetsidesoftware.code-spell-checker --force
code --install-extension james-yu.latex-workshop --force
code --install-extension krvajalm.linter-gfortran --force
code --install-extension ms-python.python --force
curl.exe -O https://home.hirosaki-u.ac.jp/heroic-2020/wp-content/uploads/sites/25/Code-User-settings.json.txt
mv Code-User-settings.json.txt $env:APPDATA\Code\User\settings.json

以上で,メニューの日本語化などの拡張機能のインストールは終了です。

Visual Studio Code を使ったプログラミング例

Visual Studio Code は [スタート] からアイコンをクリックして起動できますが,ここでは,以下のように Windows PowerShell のコマンドラインから,code helloj.c と打って起動し,

以下のプログラム文を作成します。

#include <stdio.h>

int main()
{
    printf("こんにちは, C!\n");
    return 0;
}

作成し終わったら(拡張機能のおかげで色付けされます。色付け以外にも,いろいろお節介をやいてくれますので私のような初心者にはありがたいです。ありがた迷惑と思う上級者もいるかもしれませんが。),右上の赤枠で囲った三角マークをクリックすると…

コンパイルと実行の結果が画面下に表示されます。(Code Runner 拡張機能)

出力結果を画面右に出すこともできます。(ヒントは,上の細線赤四角の上部の Code と書かれたあたりでマウス右クリックです。)

 

少しだけ応用編:Emacs を使って

PC 実習室の Windows には,UNIX 文化における伝統的なテキストエディタである Emacs もインストールしています。今や Ubuntu にさえデフォルトではインストールされなくなり,言わんや Windows で愛用している方がいるのかさえ定かではありませんが,Emacs を使った例もまとめておきます。

Emacs の初期設定

PC 実習室の Windows Emacs はシステムワイドに site-start.el で設定されているため,ユーザは特に設定を行う必要はありません。あえて言えば,初回に1回だけ以下の1行をコピーして Windows PowerShell  に貼り付けてエンターキーを押して実行することくらいです。(必須ではありませんが,やっておいたほうがすっきりします。この設定だけは,site-start.el に書いておいても無視されてしまい,ユーザ各自で行う必要があります。)

echo '(setq inhibit-startup-message t)' >> $env:HOME\.emacs

Emacs を使ったプログラミング例

Windows PowerShell やコマンドプロンプトや Cmder から runemacs helloj.c と打って起動します。emacs でも起動しますが,Windows 限定では runemacs コマンドをお勧めします。(理由は実際に打って起動してみればわかりますが,コマンドラインが解放されて次のコマンドを打てる状態になります。)

「Tools」メニューから「Compile… 」を選ぶと…

ウインドウ最下段に以下のように Compile command: が現れるので,そのままエンターキーを押すと…

ウインドウが分割され,下半分にコンパイル・実行結果が表示されます。

Compilation ウインドウを画面右に出すこともできます。(「File」メニューの「New Window on Right」を使い,右の Buffer に *compilation* を出します。)

 

まとめ

このページは,ユーザの方から,

「MinGW-w64 10.2.0」を使用するには,どこから入ればよいのでしょうか?入口が見当たりません。

というご質問を受けて,書いてみたものです。

MinGW とは,たとえば Visual Studio のような,何かアプリのようなものではなく,コマンドラインで使える gcc, g++, gfortran などのコマンド群と考えればよろしいかと思います。

MinGW をインストールすることによって,Windows PowerShell やコマンドプロンプトや Cmder などの,いわゆるターミナルアプリケーションのコマンドラインに, gcc とか g++ とか gfortran  とかのコマンドを打ち込んでプログラムをコンパイルすることが可能になります。

したがって,MinGW を使用するために必要なものは,コマンドを打ち込むためのターミナルアプリケーションと,プログラム文を書くためのテキストエディタです。

テキストエディタは,個人の好みや経験によりさまざま選択肢があります。このページでは標準搭載されている「メモ帳」(notepad)のほか,Visual Studio Code,Emacs について紹介しましたが,他にも gedit や vim も使えるようにしています。

もし,これから新しくPC 実習室の Windows 環境で MinGW を使ったプログラミングをはじめるというのであれば,まったくの初心者であっても,あるいは UNIX 的文化に慣れ親しんできた方であっても,ターミナルアプリケーションは Cmder,テキストエディタは Visual Studio Code ではじめたらどうでしょうか,というのが私の提案です。(また個人的好みを強制している!という批判はあるかと思いますが。)

Cmder で使える Bash 的なコマンド群(ls, cp, mv, rm 等)は Linux (Ubuntu) でも macOS でもターミナルで使える共通のコマンドですし,Cmder は初期設定で UTF-8 対応にしていますので日本語字化け問題がありません(UTF-8 のテキストを UTF-8 で表示するという意味で)。これも Ubuntu や macOS  のターミナルと同様です。(だいたい,Windows 標準搭載の「メモ帳」が Shift-JIS で保存できなくなった今となっては,Windows のターミナルも UTF-8 をデフォルトとしてもよい頃だと思うのですが… )

また,テキストエディタ Visual Studio Code は PC 実習室では Windows, Ubuntu, macOS 全てにおいて利用可能です。センターが提案している初期設定を行えば,OS によらずに同等な使い心地がえられますし,何より無料ですし,活発に開発・改良されています。(アップデートの頻度が高すぎて,ネットブートイメージの更新が大変。)

補足:gfortran も同様に使えます

基本編では gcc, g++,少しだけ応用編では gcc のみについて説明しましたが,MinGW (GNU コンパイラコレクション) のコマンドの一つである gfortran も同様に使えます。

コマンドラインでの gfortran コマンドの使用はもちろん,Visual Studio Code や Emacs でも同様に使えますので,お試しください。

Emacs では,*.f と *.f90 の拡張子について,「Compile… 」を選択すると Compile command: に gfortran が設定されます。また,Visual Studio Code でも setting.json に設定しています。