
C言語GUI入門|GCCと開発ツールをインストールする
C言語のソースファイルからWindows向けの実行ファイルを作るには、GCCを中心とした開発ツールが必要です。
この節では、MSYS2 UCRT64環境へ次の2つをインストールします。
- UCRT64向けのGCCツールチェーン
- MSYS2で開発作業を行うためのbase-devel
インストール後は、gcc --versionでGCCが実行できることを確認します。さらに、which gccを使用して、UCRT64向けのGCCが選ばれていることを確認します。
作業の流れは次のとおりです。
- MSYS2 UCRT64ターミナルを起動する
- UCRT64環境であることを確認する
- GCCツールチェーンをインストールする
- base-develをインストールする
- gcc --versionでバージョンを確認する
- which gccでGCCの場所を確認する
- UCRT64向けGCCが選ばれていることを確認する
第2章では、まだC言語のプログラムは作成しません。ここでは、次の章からソースファイルをコンパイルできるように、必要な道具をそろえていきましょう。
GCCと開発ツールの役割
GCCは、C言語で書いたソースファイルをコンピューターが実行できる形式へ変換するためのコンパイラーです。
ただし、C言語の開発ではGCC本体だけでなく、次のようなツールも必要になります。
- ソースファイルをコンパイルするツール
- オブジェクトファイルを結合するツール
- ライブラリを扱うツール
- Windows向けのヘッダーファイル
- Windows向けのランタイム
- プログラムをデバッグするツール
- 複数のファイルをまとめてビルドするツール
このように、プログラムの作成に必要な道具をまとめた一式をツールチェーンと呼びます。
GCCだけではなくツールチェーンを導入する理由
小さなC言語プログラムであれば、GCC本体だけでもコンパイルできる場合があります。しかし、GTK 4を使ったGUIアプリケーションでは、ヘッダーファイルやライブラリを扱う複数のツールが関係します。
本コンテンツでは、必要なツールをあとからひとつずつ追加するのではなく、UCRT64向けのツールチェーングループをまとめてインストールします。
使用するグループ名は次のとおりです。
mingw-w64-ucrt-x86_64-toolchain
このグループには、GCC、GDB、Binutils、Windows向けヘッダーファイル、make、pkgconfなどが含まれています。
| 主なパッケージ | 役割 |
|---|---|
| gcc | C言語などのソースファイルをコンパイルする |
| binutils | アセンブラーやリンカーなどを提供する |
| gdb | プログラムの動作を調べるデバッガー |
| headers | Windows向けのヘッダーファイルを提供する |
| crt | Windows向けプログラムの実行に必要な基本部分を提供する |
| make | ビルド手順を自動化する |
| pkgconf | ライブラリのコンパイル情報を取得する |
| winpthreads | スレッド処理に関係する機能を提供する |
すべての名前や役割を、今すぐ暗記する必要はありません。まずは、GCCを中心とした開発道具のセットだと考えておけば大丈夫です。
図1:GCCツールチェーンを構成する開発ツール

この図から分かること
C言語の開発では、GCCだけが単独で働くわけではありません。
リンカー、ヘッダーファイル、make、pkgconfなど、複数の道具が連携します。ツールチェーングループを利用すると、UCRT64環境で必要になる主要な開発ツールをまとめてインストールできます。
インストール前にMSYS2を更新する
GCCをインストールする前に、MSYS2全体が最新になっていることを確認します。
MSYS2 UCRT64ターミナルを起動し、次のコマンドを実行します。
pacman -Syu更新対象が表示された場合は、画面の案内に従って更新します。MSYS2本体の更新によってターミナルが閉じた場合は、MSYS2 UCRT64を起動し直し、同じコマンドをもう一度実行します。
pacman -Syu次のように表示されれば、更新対象はありません。
:: Starting core system upgrade...
there is nothing to do
:: Starting full system upgrade...
there is nothing to do古いパッケージ情報のままGCCをインストールすると、依存するパッケージのバージョンが合わない可能性があります。先にシステム全体を更新しておくと、トラブルを減らせます。
MSYS2 UCRT64ターミナルを確認する
GCCのインストールは、MSYS2 UCRT64ターミナルで行います。
ターミナルのプロンプトにUCRT64と表示されていることを確認してください。
ユーザー名@コンピューター名 UCRT64 ~
$MSYSやMINGW64と表示されている場合は、別の環境を起動しています。
そのままインストールすると、本コンテンツで使用するものとは異なるGCCが選ばれる可能性があります。現在のターミナルを閉じ、WindowsのスタートメニューからMSYS2 UCRT64を起動し直しましょう。
GCCツールチェーンをインストールする
MSYS2 UCRT64ターミナルへ、次のコマンドを入力します。
pacman -S --needed mingw-w64-ucrt-x86_64-toolchainコマンドが長いため、途中で改行しないように注意してください。コピーして貼り付けてもかまいません。
コマンドの意味
| 部分 | 役割 |
|---|---|
| pacman | MSYS2のパッケージ管理ツール |
| -S | パッケージをサーバーと同期してインストールする |
| --needed | すでに最新のパッケージは再インストールしない |
| mingw-w64-ucrt-x86_64-toolchain | UCRT64向けのGCCツールチェーングループ |
パッケージ名は長いですが、部分ごとに見ると対象が分かります。
| 部分 | 意味 |
|---|---|
| mingw-w64 | Windows向けの開発環境 |
| ucrt | Universal C Runtimeを使用する |
| x86_64 | 64ビットのIntelまたはAMD系CPU向け |
| toolchain | 開発ツール一式 |
この名前がUCRT64向けツールチェーンを表しています。
インストールするパッケージを選択する
コマンドを実行すると、ツールチェーングループに含まれるパッケージの一覧が表示されます。
表示例は次のようになります。
:: There are 13 members in group mingw-w64-ucrt-x86_64-toolchain:
:: Repository ucrt64
1) mingw-w64-ucrt-x86_64-binutils
2) mingw-w64-ucrt-x86_64-crt
3) mingw-w64-ucrt-x86_64-gcc
4) mingw-w64-ucrt-x86_64-gdb
5) mingw-w64-ucrt-x86_64-gdb-multiarch
6) mingw-w64-ucrt-x86_64-headers
7) mingw-w64-ucrt-x86_64-libmangle
8) mingw-w64-ucrt-x86_64-libwinpthread
9) mingw-w64-ucrt-x86_64-winpthreads
10) mingw-w64-ucrt-x86_64-make
11) mingw-w64-ucrt-x86_64-pkgconf
12) mingw-w64-ucrt-x86_64-tools
13) mingw-w64-ucrt-x86_64-winstorecompat
Enter a selection (default=all):パッケージの数や順番は、MSYS2の更新によって変わる可能性があります。
本コンテンツではグループ全体をインストールするため、何も入力せずにEnterキーを押します。
Enter a selection (default=all):default=allは、Enterキーだけを押すとすべて選択されるという意味です。
インストールを確認する
パッケージの選択後、ダウンロードサイズやインストール後の容量が表示されます。
続いて、次のような確認が表示されます。
:: Proceed with installation? [Y/n]Yを入力してEnterキーを押します。
YYが大文字で表示されているため、Enterキーだけでも続行できます。ただし、初めて操作するときはYを入力すると、何を選んだのか分かりやすくなります。
インストール中はターミナルを閉じない
インストールが始まると、次のような処理が行われます。
:: Retrieving packages...
:: Checking keys in keyring...
:: Checking package integrity...
:: Loading package files...
:: Checking for file conflicts...
:: Processing package changes...それぞれの意味は次のとおりです。
| 表示 | 処理内容 |
|---|---|
| Retrieving packages | パッケージをダウンロードしている |
| Checking keys in keyring | パッケージの署名を確認している |
| Checking package integrity | ファイルが壊れていないか確認している |
| Loading package files | パッケージを読み込んでいる |
| Checking for file conflicts | 既存ファイルとの競合を確認している |
| Processing package changes | パッケージをインストールしている |
再び入力待ちのプロンプトが表示されるまで待ちます。
ユーザー名@コンピューター名 UCRT64 ~
$GCCツールチェーンに含まれる主な機能
インストールしたツールチェーンには、次のような機能が含まれています。
GCC
C言語のソースファイルをコンパイルします。
第3章では、gccコマンドを使ってC言語のソースファイルからexeファイルを作成します。
Binutils
アセンブラー、リンカー、オブジェクトファイルを確認するツールなどを提供します。
GCCを実行すると、必要に応じてこれらのツールが内部で呼び出されます。
GDB
プログラムの動作を詳しく調べるためのデバッガーです。
プログラムを1行ずつ実行したり、変数の値を確認したりするときに使用します。
Windows向けヘッダーファイルとランタイム
Windows上で動作するプログラムを作るために必要な宣言や基本機能を提供します。
make
複数のコンパイル手順を自動化するためのツールです。
本コンテンツの前半ではGCCを直接実行しますが、プログラムが大きくなるとmakeなどのビルドツールが便利になります。
pkgconf
ライブラリを利用するために必要なコンパイルオプションやリンクオプションを取得します。
GTK 4プログラムをコンパイルするときに使用するpkg-configコマンドは、この仕組みと関係しています。
図2:pacmanでGCCと開発ツールをインストールする

この図から分かること
GCCツールチェーンはpacmanを使ってインストールします。
ツールチェーングループを指定すると、GCCだけでなく、リンカー、デバッガー、make、pkgconfなどもまとめて導入できます。選択画面ではEnterキーで全パッケージを選び、確認画面ではYを入力してインストールを進めます。
base-develをインストールする
続いて、開発作業でよく使用する基本ツールをまとめたbase-develをインストールします。
MSYS2 UCRT64ターミナルで、次のコマンドを実行します。
pacman -S --needed base-develbase-develは、MSYS2でソフトウェアのビルドやパッケージ作成を行うための基本ツールをまとめたものです。MSYS2の公式パッケージ情報では、makepkgによるパッケージ作成に必要な最小限の開発用パッケージとして説明されています。
base-develの役割
base-develには、次のような開発作業で利用するツールが含まれます。
- make
- patch
- diff
- sed
- awk
- grep
- m4
- autoconf
- automake
- libtool
- pkgconf
- makepkgで必要になる補助ツール
含まれるパッケージは、MSYS2の更新によって変わる可能性があります。
本コンテンツですべてのツールをすぐに使用するわけではありませんが、今後ライブラリを扱ったり、ビルド処理を自動化したりするときの基本環境になります。
base-develとツールチェーンの違い
| 項目 | 主な役割 |
|---|---|
| mingw-w64-ucrt-x86_64-toolchain | Windows向けプログラムを作るためのUCRT64用ツール |
| base-devel | MSYS2内でビルド作業を行うための基本ツール |
| GCC | C言語のソースファイルをコンパイルする |
| GTK 4 | GUI機能を提供するライブラリ |
ツールチェーンは、Windows向けの実行ファイルを作るための道具です。
base-develは、MSYS2環境内でさまざまなビルド作業を行うための補助的な道具を提供します。両方をインストールしておくと、これからの学習を進めやすくなります。
インストールを進める
コマンドを実行すると、インストール対象と必要な容量が表示されます。
続いて、次の確認が表示されます。
:: Proceed with installation? [Y/n]Yを入力してEnterキーを押します。
Yインストール済みのパッケージは、--neededによって不要な再インストールが省略されます。
処理が完了し、入力待ちのプロンプトへ戻るまでターミナルを閉じないでください。
ターミナルを再起動する
GCCツールチェーンとbase-develのインストールが完了したら、MSYS2 UCRT64ターミナルを一度閉じます。
その後、WindowsのスタートメニューからMSYS2 UCRT64を起動し直します。
再起動することで、インストールしたコマンドや環境設定が、新しいターミナルで確実に利用できる状態になります。
起動後は、プロンプトにUCRT64と表示されていることを確認します。
ユーザー名@コンピューター名 UCRT64 ~
$gcc --versionでGCCを確認する
GCCが正しくインストールされたことを確認します。
MSYS2 UCRT64ターミナルで、次のコマンドを実行します。
gcc --versionコマンドの意味
| 部分 | 役割 |
|---|---|
| gcc | GCCを起動するコマンド |
| --version | インストールされているバージョン情報を表示する |
実行結果の例
gcc.exe (Rev3, Built by MSYS2 project) 16.2.0
Copyright (C) 2026 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のバージョン番号やRevの番号は、インストールした時期によって異なります。例と同じ番号でなくても問題ありません。
次の内容が確認できれば、GCCは実行できています。
- gcc.exeと表示される
- Built by MSYS2 projectと表示される
- GCCのバージョン番号が表示される
- command not foundというエラーが表示されない
MSYS2公式パッケージ情報では、UCRT64向けGCCはmingw-w64-ucrt-x86_64-gccというパッケージとして提供されています。
使用しているGCCの場所を確認する
パソコンに別のGCCがインストールされている場合、意図しないGCCが実行されることがあります。
そのため、GCCが動くだけでなく、どこにあるGCCが選ばれているかも確認します。
次のコマンドを実行します。
which gcc実行結果の例
/ucrt64/bin/gccこの結果が表示されれば、UCRT64向けのGCCが使用されています。
MSYS2のパスとWindowsのパス
MSYS2では、WindowsのフォルダーをUnix形式のパスで表します。
| MSYS2での表示 | Windowsでの場所 |
|---|---|
| /ucrt64/bin/gcc | C:\msys64\ucrt64\bin\gcc.exe |
| /ucrt64/bin | C:\msys64\ucrt64\bin |
| /usr/bin | C:\msys64\usr\bin |
MSYS2をC:\msys64以外へインストールした場合は、Windows側のパスも変わります。
UCRT64環境では、コマンドの検索先であるPATHの先頭に/ucrt64/binが追加されます。そのため、gccと入力すると、通常は/ucrt64/bin/gccが実行されます。
Windows形式でGCCの場所を確認する
Windows形式のパスでも確認できます。
MSYS2 UCRT64ターミナルで、次のコマンドを実行します。
where.exe gcc実行結果の例
C:\msys64\ucrt64\bin\gcc.exeパソコンに複数のGCCがインストールされている場合は、複数のパスが表示されることがあります。
その場合は、最初に次のパスが表示されることを確認します。
C:\msys64\ucrt64\bin\gcc.exeコマンドを入力したときは、通常、検索順で最初に見つかったGCCが実行されます。
whichとwhere.exeの違い
| コマンド | 表示形式 | 主な用途 |
|---|---|---|
| which gcc | MSYS2形式 | Bashから実行されるGCCを確認する |
| where.exe gcc | Windows形式 | Windows上のGCCの場所を確認する |
本コンテンツでは、まずwhich gccの結果を確認します。必要に応じてwhere.exe gccも利用すると、エクスプローラー上の場所と対応させやすくなります。
GCCの対象環境を確認する
必要に応じて、GCCがどの環境向けのプログラムを作るように設定されているか確認できます。
次のコマンドを実行します。
gcc -dumpmachine実行結果の例
x86_64-w64-mingw32この表示は、64ビットWindows向けのGCCであることを表します。
| 部分 | 意味 |
|---|---|
| x86_64 | 64ビットのIntelまたはAMD系CPU |
| w64 | 64ビットWindows関連 |
| mingw32 | MinGW-w64系のWindows向け環境 |
名前の末尾にmingw32と含まれていますが、32ビット版のGCCを使用しているという意味ではありません。先頭のx86_64が64ビット向けであることを示しています。
図3:UCRT64向けGCCが使われていることを確認する

この図から分かること
GCCの確認では、バージョンだけでなく、使用しているGCCの場所も確認することが大切です。
gcc --versionでGCCが実行できることを確認し、which gccで/ucrt64/bin/gccが選ばれていることを確認します。さらにgcc -dumpmachineを実行すると、64ビットWindows向けのGCCであることを確認できます。
正常にインストールできたときの確認結果
すべての確認が成功すると、次のような状態になります。
| 確認内容 | 期待する結果 |
|---|---|
| 使用中のターミナル | プロンプトにUCRT64と表示される |
| gcc --version | GCCのバージョンが表示される |
| which gcc | /ucrt64/bin/gccと表示される |
| where.exe gcc | C:\msys64\ucrt64\bin\gcc.exeが最初に表示される |
| gcc -dumpmachine | x86_64-w64-mingw32と表示される |
これらを確認できれば、UCRT64向けのC言語開発環境が正しく用意されています。
gcc: command not foundと表示された場合
gcc --versionを実行したときに、次のようなエラーが表示される場合があります。
bash: gcc: command not foundこの場合は、次の点を確認します。
- GCCツールチェーンのインストールが完了したか
- pacmanの処理中にターミナルを閉じていないか
- MSYS2 UCRT64ターミナルを使用しているか
- インストール後にターミナルを起動し直したか
- パッケージ名を正しく入力したか
GCCツールチェーンをもう一度確認する場合は、次のコマンドを実行します。
pacman -S --needed mingw-w64-ucrt-x86_64-toolchainインストール済みのパッケージは--neededによって省略され、不足しているものがあればインストールされます。
which gccの結果が異なる場合
which gccの結果が次のようになっている場合は、UCRT64以外のGCCが選ばれています。
/mingw64/bin/gccこの場合は、MSYS2 MINGW64ターミナルを起動している可能性があります。
次の手順で起動し直します。
- 現在のターミナルを閉じる
- Windowsのスタートメニューを開く
- MSYS2 UCRT64を検索する
- MSYS2 UCRT64を起動する
- which gccをもう一度実行する
期待する結果は次のとおりです。
/ucrt64/bin/gccPowerShellやコマンドプロンプトでgcc --versionを実行すると、別のGCCが選ばれたり、gccが見つからなかったりする場合があります。環境構築中の確認は、MSYS2 UCRT64ターミナルで行いましょう。
インストールした開発環境を今後も更新する
GCCや開発ツールは、今後pacman -Syuを実行すると、MSYS2のほかのパッケージと一緒に更新されます。
pacman -SyuGCCだけをWebサイトから個別にダウンロードして上書きする必要はありません。MSYS2で導入したパッケージは、pacmanを通して管理します。
GCCとbase-develの準備が整ったら、次はGTK 4をインストールし、C言語からウィンドウやボタンを利用できる環境を追加していきます。
