MSYS2とは?UCRT64・MINGW64の違いとWindows 11での使い方【2026年版】

Programming

MSYS2をWindows環境で使うときに、どのシェルを選ぶか、GCCをどこへ入れるか、VS Codeからどう呼ぶかを毎回調べ直していたので、2026年時点の構成を自分用に整理しておく。

以前はMINGW64を中心に使う説明が多かったが、現在のMSYS2公式は、迷った場合はUCRT64を選ぶ方針になっている。さらに2026年3月15日からMINGW64の段階的な廃止が始まっているため、新しく環境を作る場合はUCRT64を基準にする。

MSYS2とは

MSYS2は、Windows上でUnix系のコマンドやパッケージ管理機能を使いつつ、GCCやClangでWindowsネイティブアプリをビルドできる開発環境。

  • bash、tar、grepなどのUnix系ツールを使える
  • pacmanでツールやライブラリをインストール・更新できる
  • MinGW-w64のGCCでWindows向けexeをビルドできる
  • Clang / LLVMの環境も選べる
  • VS CodeやCMakeと組み合わせて使える

「Linux環境そのもの」をWindows上で動かすWSLとは役割が少し違う。MSYS2はWindowsネイティブの開発環境を作りやすいのが大きな目的。

MSYS2の環境の違い

MSYS2には複数の環境があり、それぞれPATH、コンパイラ、Cランタイムなどが異なる。2026年時点で主に意識するのはMSYS、UCRT64、CLANG64、CLANGARM64。

環境 主な用途 ツールチェーン 主なパス
MSYS MSYS2本体の管理、Unix系ツール GCC / Cygwin系 /usr/bin
UCRT64 64bit Windows向けの標準的な開発 GCC + UCRT /ucrt64/bin
CLANG64 64bit Windows向けClang開発 LLVM / Clang + UCRT /clang64/bin
CLANGARM64 Windows on ARM向け LLVM / Clang + UCRT /clangarm64/bin
MINGW64 旧来の64bit Windows向け環境 GCC + MSVCRT /mingw64/bin

MSYSとUCRT64は別物として考える

MSYSはMSYS2自体の管理やUnix系ツールを使うための環境。WindowsネイティブアプリをGCCで作る用途ならUCRT64を使う。

UCRT64ではPATHの先頭に/ucrt64/binが入り、その後に/usr/binが続くため、UCRT64向けのWindowsネイティブツールとMSYS側のUnix系ツールを同時に使える。

2026年時点ではUCRT64を標準にする

MSYS2公式の環境説明では、どれを使うか迷った場合はUCRT64が推奨されている。UCRTはMicrosoftが現在のVisual Studioでも標準的に使っているUniversal C Runtimeで、MSVCRTより新しい。

MINGW64は以前よく使われていたが、2026年3月15日から段階的な廃止が始まった。新しいパッケージは追加されず、問題が出た既存パッケージが削除される可能性もある。既存環境を維持する理由がなければUCRT64かCLANG64へ移行する。

  • GCCを使う通常のWindows 64bit開発 → UCRT64
  • Clang / LLVMを使う → CLANG64
  • Windows on ARM向け → CLANGARM64
  • MSYS2本体の管理やUnix系処理 → MSYS
  • MINGW64 → 既存環境の保守用途。新規では基本的に選ばない

Windows 11へMSYS2をインストール

新しく入れる場合はMSYS2公式サイトからx86_64用のGUIインストーラーを取得する。インストール先は特に理由がなければ標準のC:\msys64のままにする。

  1. MSYS2公式サイトからインストーラーを取得
  2. インストーラーを実行
  3. 標準のC:\msys64へインストール
  4. 完了後にUCRT64ターミナルを起動
  5. 最初にシステム全体を更新
pacman -Suy

コアパッケージ更新時に、いったんMSYS2の全ターミナルを閉じるよう表示される場合がある。その場合は指示どおり終了し、UCRT64を起動し直してもう一度pacman -Suyを実行する。

GCC / G++をインストール

UCRT64でGCCだけ必要なら、公式Getting Startedにある次のパッケージを入れる。

pacman -S mingw-w64-ucrt-x86_64-gcc

GCC、G++、GDB、makeなどをまとめて揃えるならtoolchainグループを入れておく方が使いやすい。

pacman -S --needed base-devel mingw-w64-ucrt-x86_64-toolchain

インストール後の確認。

gcc --version
g++ --version
gdb --version

UCRT64用パッケージは名前にmingw-w64-ucrt-x86_64-が付く。MSYS用パッケージとUCRT64用パッケージを混同しないようにする。

VS CodeでMSYS2 UCRT64を使う

VS Codeから使う方法は、大きく「VS Codeの統合ターミナルをUCRT64にする方法」と「WindowsのPATHにUCRT64のbinを追加する方法」がある。

統合ターミナルをUCRT64にする

MSYS2公式にある設定をsettings.jsonへ追加する。

{
  "terminal.integrated.profiles.windows": {
    "MSYS2 UCRT": {
      "path": "cmd.exe",
      "args": [
        "/c",
        "C:\msys64\msys2_shell.cmd -defterm -here -no-start -ucrt64"
      ]
    }
  }
}

これでVS CodeのターミナルプロファイルからMSYS2 UCRTを選べる。

Windows側からgccを直接使う場合

MicrosoftのVS Code C/C++ドキュメントでは、標準インストールなら次のパスをWindowsのユーザーPATHへ追加する方法が案内されている。

C:\msys64\ucrt64\bin

PATH変更後は、すでに開いているPowerShell、コマンドプロンプト、VS Codeをいったん閉じて開き直す。

pacmanでよく使うコマンド

MSYS2のパッケージ管理はpacman。毎回調べるものだけメモ。

目的 コマンド
システム全体を更新 pacman -Suy
パッケージを検索 pacman -Ss キーワード
インストール済みを検索 pacman -Qs キーワード
パッケージをインストール pacman -S パッケージ名
パッケージを削除 pacman -R パッケージ名
依存関係も含めて削除 pacman -Rs パッケージ名

MSYS2はローリングリリースなので、特定の一部パッケージだけを古い状態に保つより、基本的にはシステム全体を更新して使う。

よくあるトラブル

gcc: command not found

まずUCRT64ターミナルを使っているか確認する。UCRT64ならecho $MSYSTEMの結果がUCRT64になる。

echo $MSYSTEM
which gcc

GCC未導入ならmingw-w64-ucrt-x86_64-gccまたはtoolchainをインストールする。

PowerShellではgccが見つからない

MSYS2 UCRT64ターミナルでは動くがPowerShellでは動かない場合、Windows側のPATHにC:\msys64\ucrt64\binが入っていない可能性が高い。PATH追加後はターミナルを開き直す。

MINGW64とUCRT64のライブラリを混ぜてしまった

MINGW64はMSVCRT、UCRT64はUCRTを使うため、オブジェクトファイルや静的ライブラリを安易に混在させない。既存のMINGW64プロジェクトをUCRT64へ移す場合は、依存ライブラリも含めてUCRT64向けに揃えて再ビルドする方が分かりやすい。

pacman更新後にターミナルを閉じるよう言われた

MSYS2ランタイムなどのコア更新では正常な動作。表示に従って全MSYS2プロセスを終了し、再起動後にもう一度pacman -Suyを実行する。

どのパッケージを入れればよいか分からない

まずpacman -Ssで検索する。UCRT64用のWindowsネイティブパッケージなら、基本的にmingw-w64-ucrt-x86_64-で始まる名前を探す。

自分用の結論

  • 2026年に新しくMSYS2を使うならUCRT64を基準にする
  • MINGW64は段階的廃止が始まっているため新規環境では避ける
  • GCC環境はmingw-w64-ucrt-x86_64-toolchainでまとめて入れる
  • VS Codeの統合ターミナルもUCRT64にする
  • Windows側から直接gccを使う場合はC:\msys64\ucrt64\binをPATHへ追加
  • 更新はpacman -Suyでシステム全体を揃える

参考

タイトルとURLをコピーしました