開発環境/ツール

【MinGW】無料のC/C++プログラミング環境をインストールしよう

【※ 当記事は2020年1月26日時点の情報です】

ペイヴメント(@pavement1234)です。

エンジニア
エンジニア

WindowsでC/C++言語を開発したい

但し無料で使えるもの限定

こんな悩みを解決します。

MinGWについてカンタンに紹介

Windows向けのC/C++言語プログラミング環境はVisual Studioが有名ですが、個人で買うには高すぎる(10万オーバー)ので、簡単なプログラミングを試すだけならMinGWをオススメします。

Wikipediaで「MinGW」を調べるとGNUツールチェーン(C言語などのプログラムを作るために必要なツール群)をWindowsに移植したと書いてあります。

≫出典:MinGW(Wikipedia)

MinGW(ミン・ジー・ダブリュー、Minimalist GNU for Windows)はGNUツールチェーンのWindows移植版である。MinGWはWindows APIのためのヘッダファイルを含んでおり、フリーのコンパイラであるGCCを、Windowsアプリケーションの開発のために利用できる。

MinGWプロジェクトでは、32bit環境向けの2つの主要なパッケージを開発、配布している。Windows環境に移植されたGCCは、コマンドラインから使用することも、IDEへ統合することもできる。もう1つのMSYS (minimal system) は軽量のUNIX風シェル環境であり、端末エミュレータのrxvtと、開発ツールのautoconfを実行可能にするためのPOSIXコマンド群とが含まれている。

この2つのパッケージは、Cygwinからフォークして誕生した。CygwinではWindowsの機能性を犠牲にすることで、より機能的なUnix風環境を提供している。なお、どちらのパッケージもフリーソフトウェアで、Win32APIを利用するためのヘッダファイルはパブリックドメインで提供されており、GNUツールの移植版はGPLである。MinGWの個々のGNUツール及びMSYSは、MinGWの公式サイトより入手可能である。

MinGW – Wikipedia https://ja.wikipedia.org/wiki/MinGW

 

本記事の手順に沿って進めると、無料のC/C++言語プログラミング環境がカンタンに構築できます。

インストール手順(Windows10向け)

  • MinGWをダウンロード
  • MinGWをインストール
  • インストール管理画面から設定変更
  • MinGWのパス(C:\MinGW\bin)を環境変数に設定

①MinGWのホームページに行く

≫MinGW Minimalist GNU for Windows

②MinGWのホームページの左側ペインにある「Download」をクリック

③ダウンロードページの真ん中ぐらいに「mingw-get-setup.exe」というリンクがあるので、青いボタンをクリック

④インストーラ(EXE)を保存するか聞かれるので「ファイルを保存」をクリック

⑤インストーラ(EXE)をダブルクリックします。

⑥「Install」をクリック

⑦ 「Continue]をクリック

⑧インストールが終わったら「Continue]をクリック

⑨インストール管理画面が開く

⑩「mingw32-base-bin」を左クリックするとコンテキストメニューが出るので「Mark for Installation」をクリック

⑪同様に「mingw32-gcc-g++-bin」の「Mark for Installation」も有効にする

⑫メニューから「Installation」→「Apply Changes」をクリック

⑬「Schedule of Pending Actions」という画面が出るので「Apply」をクリック

⑭インストールが終わったら「Applying Scheduled Changes」画面が出てくるので「Close」をクリック

※⑨で開いたインストール管理画面は閉じてよいです。

⑮システムを開く

「Windowsボタン」を押して「system」と入れると「システム」が候補に出てくるのでクリックします。「System Configuration」や「システム情報」ではありません。

⑯「システムの詳細設定」をクリック

⑰「環境変数」をクリック

⑱ 「Path」が選択された状態で「編集」をクリック

⑲「新規」を押して「C:\MinGW\bin」と入力して「OK」をクリック

「環境変数」画面と「システムのプロパティ」画面をOKで閉じます。

⑳コマンドプロンプトを開く

「Windowsボタン」を押して「cmd」と入れるとコマンドプロンプトが開きます。

㉑コマンドプロンプトに「gcc –version」と入れてEnterを押すとGCCのバージョンが表示される。これでインストール完了

エンジニア
エンジニア

やっとインストールできました…。初心者にはちょっとキツイかも。

Hello World(サンプルプログラム)

超有名な「Hello World」と表示するプログラムをgccでコンパイルして実行します。

  • コマンドプロンプトを開く
  • 作業ディレクトリを生成
  • 作業ディレクトリに移動
  • プログラムを作る
  • コンパイルして実行する

①コマンドプロンプトを開く

「Windowsボタン」を押して「cmd」と入れるとコマンドプロンプトが開きます。

②作業ディレクトリを作る

例えばコマンドプロンプトに「mkdir c:\\temp」と打ちEnterを押し、「cd c:\temp」と打ちEnterを押します。

③コマンドプロンプトから「start .」と打ちEnterを押すと、エクスプローラが開き「C:\temp」に移動する

④「c:\temp」にtest.cというファイルを作り、メモ帳などで開き、以下の内容を入力して保存

⑤コマンドプロンプトからgcc「gcc -g -o test test.c」でコンパイルを実施し「test.exe」を実行すると「Hello World」と表示される

c:\temp>gcc -g -o test test.c

c:\temp>test.exe
Hello World

c:\temp>

エンジニア
エンジニア

これが有名なHello Worldですね。

gdbによるデバッグ方法

gdbはフリーのデバッガです。デバッガとはプログラムをstep実行したり変数を見たりできるデバッグ支援プログラムです。

コマンドラインベースなのでちょっと使いにくいかもしれませんが、非常に高機能なので覚えれば鬼に金棒。

  • gdbを起動
  • メイン関数の先頭にブレークポイントを張る
  • ステップ実行する
  • gdbから抜ける

①コマンドプロンプトから「gdb test.exe」でgdbを起動。gdbに「b main」でmain関数の頭にブレークポイントを張り「run」するとmain関数でブレーク(停止)。

c:\temp>gdb test.exe
GNU gdb (GDB) 7.6.1
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type “show copying”
and “show warranty” for details.
This GDB was configured as “mingw32”.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>…
Reading symbols from c:\temp\test.exe…done.
(gdb) b main
Breakpoint 1 at 0x40141e: file test.c, line 10.
(gdb) run
Starting program: c:\temp/test.exe
[New Thread 16072.0x2ae4] [New Thread 16072.0×3714]

Breakpoint 1, main (argc=1, argv=0x1f1608) at test.c:10
10 printf(“Hello World\n”);
(gdb)

②gdb画面から「step」と打つと「Hello World」と表示される。以降、Enterを打ち続けるとプログラムが終了。

Breakpoint 1, main (argc=1, argv=0xab1608) at test.c:10
10 printf(“Hello World\n”);
(gdb) step
Hello World
11 return 0;
(gdb)
12 }
(gdb)
0x00401236 in __register_frame_info ()
(gdb)
Single stepping until exit from function __register_frame_info,
which has no line number information.
0x00401238 in __register_frame_info ()
(gdb)
Single stepping until exit from function __register_frame_info,
which has no line number information.
0x0040123d in __register_frame_info ()
(gdb)
Single stepping until exit from function __register_frame_info,
which has no line number information.
0x00401240 in __register_frame_info ()
(gdb)
Single stepping until exit from function __register_frame_info,
which has no line number information.
[Inferior 1 (process 456) exited normally] (gdb)
The program is not being run.
(gdb)

③gdb画面から「quit」と打つとgdbから抜ける(Ctrl+Cとかexitでは抜けられません

(gdb)
The program is not being run.
(gdb) quit

c:\temp>

まとめ

MinGWをインストールしてgccでプログラムコンパイル、gdbでデバッグという一連の流れを試してみました。

C言語の細かい文法、gccのオプション、gdbデバッガの詳しい使い方などは追々説明していきます。

ABOUT ME
ペイヴメント
ペイヴメントのエンジニア塾(当ブログ)では20年以上の経験から得られたプログラミング系ノウハウについてベテランにも満足して頂けるような内容の濃いコンテンツを初心者にも分かりやすい形で日々発信しています。【経歴】ベンチャーのソフトハウスで4年勤務後、精密機器メーカーのソフト開発部門に勤務し今に至ります。