2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WindowsでMSYS2のg++が見つからない原因がノートンだった話

Posted at

WindowsでMSYS2のg++が見つからない原因がノートンだった話


この記事を読むとわかること

  1. ウイルス対策ソフトによるMSYS2のインストールの妨害が原因だった
  2. Norton 360 と MSYS2 の相性問題
  3. g++ が動かない、pacmanfork エラーを出す場合の具体的手順
  4. Norton を有効にしたまま開発環境を構築する方法
  5. 使うコマンド集(一番下)

はじめに

「よし、WindowsでC++の勉強を始めよう!」
そう思ってMSYS2をインストールしてパスにもしっかり登録したのに、なぜかコンパイラ(g++)が見つからない…
そんなひといませんか?
わたしはc++をはじめようとしたまさにそのひとりでした。しかし、その環境構築にとても手間取ったので誰かの役に立てばと思いこれを残す次第です。

ターミナルではこんなエラーが出つづけていた(しっかり環境変数の設定はできてる!):


PS C:\Users\私> g++ --version
g++ : 用語 'g++' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。
名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してください
。
発生場所 行:1 文字:1
+ g++ -version
+ ~~~
    + CategoryInfo          : ObjectNotFound: (g++:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException
PS C:\Users\わたし> gcc --version
gcc : 用語 'gcc' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。
名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してください
。
発生場所 行:1 文字:1
+ gcc --version
+ ~~~
    + CategoryInfo          : ObjectNotFound: (gcc:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException
PS C:\Users\私> where g++
PS C:\Users\私>
↑g++がみあたらないってこと

ネットの情報を参考に環境変数を設定しても解決せず、途方に暮れることもしばしば。
何日も試行錯誤した結果、原因はノートン 360 による干渉だったことが判明しました。(Windows Defenderでも同様の干渉が起きることがある)

この記事では、同じようにMSYS2で苦戦している方へ向けて、完全なトラブルシューティング手順を紹介します。


対象読者

  • MSYS2をインストールしたのに g++ --version が動かない
  • Nortonを入れていてこれからMSYS2を入れようとしている
  • pacman 実行時に fork: No such file or directory エラーが出る
  • 自作プログラムを実行するとノートンにブロックされる

筆者の環境

  • OS: Windows 11
  • ウイルス対策ソフト: ノートン 360
  • msys2-x86_64-20250830

原因

先に結論を述べます。私が遭遇した g++ not found や fork エラーといった不可解な問題の根本原因は、ノートンがMSYS2のインストーラ(p acman)の動作を「怪しい」と誤認し、ファイルの作成を部分的にブロックしていたことでした。

なぜ、どのように妨害が起きるのか?

  1. pacman の動作: MSYS2のインストーラ pacmanは、単にファイルをダウンロードするだけではありません。ダウンロードした圧縮ファイルを展開し、g++.exe や bash.exeといった多数の実行ファイルやライブラリ(dll)を、C:\msys64 以下の様々な場所に一斉に書き込みます。

  2. ノートンの 「ヒューリスティック分析」 :
    近年のウイルス対策ソフトは、既知のウイルスだけでなく、その振る舞いから未知のマルウェアを検出します(これをヒューリスティック分析と呼びます)。「単一のプログラムが、短時間に大量の実行可能ファイルをディスクに書き込む」という pacmanの動作は、残念ながら「PCに感染を広げようとするマルウェア(ドロッパー型)」の典型的な振る舞いと非常によく似ています。

  3. 「隔離」 の発生: この「怪しい振る舞い」を検知したノートンは、PCを守るために一部のファイルの書き込みをブロック(または隔離)します。


STEP1:失敗の原因を取り除く(ノートン無効化とクリーンアップ)

1-1A. 例外設定(推奨)

  • ノートンの「設定 → ウイルス対策 → 除外と低リスク → ファイル/フォルダ除外」に C:\msys64\ 全体 を登録する。 下に詳しく書いてあります
  • さらに、「自動保護」「SONAR 保護(ヒューリスティック検出)」両方の除外に登録すると効果大。
    ⇒これで pacman の動作や gcc.exe などのファイルがブロックされなくなります。

1-1B. ノートンの「自動保護」を一時停止

インストール作業中にノートンが干渉すると、MSYS2のインストールが不完全になります。これによって 再度インストールして成功したとしてももうまくいかない ということが起こりました。
ちなみに別のところにインストールしたときもなおりませんでした

操作手順

  1. タスクトレイのノートンアイコンを右クリック
  2. 「自動保護を無効にする」を選択
  3. 期間は「15分」など、作業に十分な時間を設定

⚠ 作業中はPCが保護されていないので、注意してください。例外設定を強く推奨


1-2. MSYS2を完全アンインストール

中途半端な状態のMSYS2を残したままだと、再インストールが失敗します。

操作手順

  1. 「設定」→「アプリ」→「インストールされているアプリ」を開く
  2. MSYS2 を検索してアンインストール
  3. C:\msys64 フォルダが残っていたら手動で削除

⚠ MSYS2が二つ以上あるときも2つとも消してください


STEP2:MSYS2とC++コンパイラのクリーンインストール

2-1. MSYS2のインストール

公式サイトから最新のインストーラーを入手し、デフォルトの C:\msys64 にインストール。


2-2. システム更新 (MSYS2 MSYS ターミナル)

UCRT64MINGW64 ではなく、MSYS2 MSYS を起動。
(他のだとうまくいかないことがある)

# パッケージ情報の同期と基本システムの更新
pacman -Syu
  • :: Proceed with installation? [Y/n]Y を入力
  • ターミナル再起動後、再度 pacman -Syu を実行

2-3. C++ツールチェーンのインストール

# 必要なツール群をインストール
pacman -S --needed base-devel mingw-w64-ucrt-x86_64-toolchain
  • Enter a selection (default=all): → 何も入力せず Enter
  • Proceed with installation? [Y/n]Y を入力
  • エラーなしで完了すればOK

✅ インストール後に g++ --version を実行すると下のようにバージョン情報が表示される。

スクリーンショット 2025-09-15 201739.png


STEP3:ノートンとの共存設定(恒久対策)

3-1. ノートン保護の再開

タスクトレイで「自動保護を有効にする」を選択


3-2. MSYS2を例外設定

ノートンに C:\msys64 フォルダを「安全」と認識させます。

操作手順

  1. ノートンメイン画面 → 「設定」
  2. 「ウイルス対策」→「スキャンとリスク」
  3. 「スキャンから除外する項目」 → 「設定[+]」
  4. 「フォルダーの追加」で C:\msys64 を指定

スクリーンショット 2025-09-15 202231.png
スクリーンショット 2025-09-15 202256.png
スクリーンショット 2025-09-15 202305.png

これで、g++ や自作プログラムの実行がブロックされなくなります


STEP4:環境変数と最終確認

4-1. Pathの設定

  1. Windows検索 → 「環境変数」 → 「システム環境変数の編集」
  2. 「環境変数…」ボタン → システム環境変数の Path を選択 → 「編集…」
  3. 「新規」で以下を追加:
    スクリーンショット 2025-09-15 202741.png
    スクリーンショット 2025-09-15 202757.png
    スクリーンショット 2025-09-15 202841.png
C:\msys64\ucrt64\bin
  1. OKで閉じる

4-2. 動作確認

  • すべてのターミナルを閉じて新しい PowerShell/コマンドプロンプトを開く
  • 実行:
g++ --version

表示例

g++.exe (Rev8, Built by MSYS2 project) 15.2.0
Copyright (C) 2025 Free Software Foundation, Inc.
...

チェックリスト

  • MSYS2クリーンインストール → OK
  • pacmanでシステム更新 → OK
  • g++インストール → OK
  • ノートン例外設定 → OK
  • Path追加 → OK
  • g++ --version動作確認 → OK
  • 環境変数が正しいか確認

おわりに

WindowsでのC++環境構築は、プログラミング学習の最初の高い壁です。
外部ソフトによる妨害が原因の場合もあるので、根本原因を特定することが大切です。

この記事が、同じ壁にぶつかる誰かの時間を節約できれば嬉しいです。

Happy Coding! 🎉


いいですね 👍
では記事末尾に置く用に、**Qiitaっぽいシンプルで実用的な「まとめコマンドリスト」**を整えました。
そのままコピペで載せられる形にしてあります👇


📝 まとめ:MSYS2 + g++ セットアップ コマンドリスト

1. システム更新 (MSYS2 MSYS ターミナルで)

# 1. パッケージ情報を最新にし、基本システムを更新
pacman -Syu

# 2. ターミナル再起動後、残りのパッケージを更新
pacman -Syu

2. C++開発ツールのインストール (MSYS2 MSYS ターミナルで)

# 3. 基本開発ツールとC++コンパイラ(g++)を一度にインストール
pacman -S --needed base-devel mingw-w64-ucrt-x86_64-toolchain

3. 動作確認 (新しいPowerShell / コマンドプロンプトで)
# 4. C++コンパイラのバージョンを確認
g++ --version

# (参考) Cコンパイラのバージョンも確認できる
gcc --version

参考


2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?