Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】WindowsでMSYS2のg++が見つからない原因がノートンだった話

2025年09月15日に「Qiita」が公開したITニュース「WindowsでMSYS2のg++が見つからない原因がノートンだった話」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

Windowsで開発環境MSYS2を導入する際、g++が見つからない、pacmanでエラーが出るなどの問題が発生することがある。これはウイルス対策ソフトのNorton 360がMSYS2のインストールを妨害し、正常に動作しないため。NortonとMSYS2の相性問題が原因だ。

ITニュース解説

システムエンジニアを目指す上で、C++などのプログラミング言語を学ぶことは非常に重要だ。Windows環境でC++開発を行う際、多くの開発者がLinuxのような使い慣れた開発ツールをWindows上でも利用したいと考えることがある。そのようなニーズに応える強力なツールの一つが「MSYS2」だ。

MSYS2は、Windows上でUNIXライクなコマンドライン環境を提供するプロジェクトだ。これにより、Linux環境で標準的に使われるようなプログラムやツールをWindows上でも簡単に利用できるようになる。例えば、ソースコードの管理によく使われるGitや、様々な開発ツール、そしてC++のプログラムをコンパイルするための「g++」といったツールもMSYS2を通じて導入できる。

g++は、C++言語で書かれたプログラムのソースコードを、コンピュータが直接実行できる形式(実行ファイル)に変換する役割を担う非常に重要なプログラムだ。プログラマーが書いたC++の命令は、そのままではコンピュータには理解できないため、g++のようなコンパイラが間に立って翻訳する必要がある。MSYS2を導入する目的の一つは、このg++を簡単にセットアップし、C++開発をスムーズに行うことにある。

しかし、MSYS2をWindowsにインストールし、いざg++を使おうとしたときに「g++が見つからない」というエラーに直面することがある。通常、このようなエラーは、オペレーティングシステムがg++というプログラムを探す場所(パスと呼ばれる)が正しく設定されていない場合に発生する。Windowsでは、実行ファイルがどこにあるかを環境変数と呼ばれる設定でOSに教えているが、それがうまくできていないと、プログラムが存在するにもかかわらず見つけられない、という状況が起こる。しかし、今回のようなケースでは、パス設定の問題ではなく、もっと根深い原因があった。

その原因として挙げられたのが、ウイルス対策ソフト「Norton 360」による干渉だ。現代のコンピュータ環境において、ウイルス対策ソフトはコンピュータをマルウェアやその他の脅威から守る上で不可欠な存在である。これらのソフトは、不審なファイルのダウンロードや、怪しいプログラムの動作をリアルタイムで監視し、危険だと判断すればその実行を阻止したり、ファイルを隔離・削除したりする機能を持つ。これは私たちの安全を守るために非常に重要な機能だが、時には、安全なプログラムであっても誤って「危険なもの」と判断してしまうことがある。これが「誤検知」と呼ばれる現象だ。

MSYS2とNorton 360の間で起こった問題は、まさにこの誤検知に起因するものだった。MSYS2は、その性質上、Windowsの一般的なアプリケーションとは異なる方法で動作することがある。例えば、Linuxのようなファイル構造を模倣したり、独自のパッケージ管理システム(pacmanと呼ばれる)を使って頻繁にファイルをダウンロード・インストールしたりする。このような挙動が、Norton 360のようなウイルス対策ソフトから見て「通常とは異なる」「不審な活動」と判断されやすかったのだ。

具体的には、MSYS2のインストール中に、g++などの重要なツールが正常にダウンロード・インストールされなかったり、インストールされたファイルがNortonによって削除されたり、あるいは実行がブロックされたりした可能性が高い。その結果、ユーザーがg++を使おうとしても、そもそもファイルが存在しなかったり、存在しても実行権限が奪われていたりして、「g++が見つからない」というエラーが発生したのだ。さらに、「pacmanがfork...」といったエラーも発生していた。これは、MSYS2の内部で新しいプロセス(プログラムの実行単位)を生成しようとした際に、Nortonがそのプロセス生成を阻害したために起こるエラーであると推測される。つまり、開発環境の核となる部分が、セキュリティソフトによって妨害されていた状況と言える。

このような状況に遭遇した場合、問題解決のためには、ウイルス対策ソフトの設定を見直す必要がある。具体的には、Norton 360のようなセキュリティソフトの「除外リスト」や「許可リスト」に、MSYS2のインストールディレクトリ全体や、g++などの主要な実行ファイルを追加する方法が有効だ。これにより、セキュリティソフトはそれらのファイルやプログラムの活動を「安全なもの」として扱い、監視や干渉を行わなくなる。ただし、セキュリティと利便性のバランスは常に考慮する必要があり、安易に全てを除外することは推奨されないため、信頼できるプログラムのみをリストに追加することが重要だ。

今回の事例は、システムエンジニアを目指す初心者にとって、開発環境の構築がいかに奥深く、そして潜在的な落とし穴が多いかを示す良い教訓となる。エラーメッセージが示す表面的な原因だけでなく、その背後にあるOSの動作、セキュリティソフトの挙動、そしてソフトウェア間の相性といった、幅広い視点から問題を分析し、解決策を探る能力が求められる。単にプログラムを動かすだけでなく、そのプログラムが動く環境全体を理解することが、優れたシステムエンジニアへの第一歩となるだろう。

関連コンテンツ