UCRT64とは?MINGW64との違いとMSYS2での選び方【2026年版】

Programming

結論:UCRT64とMINGW64で迷ったら、2026年の新規環境ではUCRT64を選ぶ。UCRT64は現在のWindowsで使われるUniversal C Runtimeを採用し、MSYS2公式でも迷った場合の選択肢として推奨されている。Clang / LLVMを使う場合はCLANG64、Windows on ARM向けならCLANGARM64が適している。MINGW64は段階的な廃止が始まっているため、新規環境では基本的に選ばない。

この記事では、UCRT64・MINGW64・CLANG64の違いと選び方を比較し、Windows 11へのインストール、GCC、VS Code、pacmanの使い方、よくあるトラブルまで順に整理する。

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ネイティブの開発環境を作りやすいのが大きな目的。

UCRT64とMINGW64の違い: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-で始まる名前を探す。

UCRT64・MINGW64のよくある質問

UCRT64とMINGW64はどちらを選ぶ?

2026年にMSYS2を新規導入する場合は、基本的にUCRT64を選ぶ。MINGW64はMSVCRTを使う既存環境の保守が主な用途で、新規開発ではUCRT64の方が選びやすい。

mingw-w64-ucrt-x86_64-gccとは?

mingw-w64-ucrt-x86_64-gccは、UCRT64環境向けのGCCパッケージ。UCRT64ターミナルでpacman -S mingw-w64-ucrt-x86_64-gccを実行してインストールする。

UCRT64とCLANG64の違いは?

どちらもUCRTを使用するが、UCRT64はGCC、CLANG64はLLVM / Clangを中心に使う。GCCを使う一般的なWindows 64bit開発ならUCRT64、Clang固有の機能やツールチェーンを使う場合はCLANG64を選ぶ。

MINGW64のプロジェクトをUCRT64へ移行できる?

移行できるが、MINGW64用にビルドしたライブラリやオブジェクトファイルを混在させず、依存ライブラリを含めてUCRT64向けに再ビルドする。Cランタイムが異なるため、段階的に混ぜるより環境全体を揃える方が安全。

自分用の結論

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

関連記事

参考

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