Windows上でgccを使用するための環境として有名な「MSYS2」があります。
本稿では、MSYS2を用いてgccを利用可能にする手順を説明します。
1.MSYS2とは何か
主にWindows上でのビルド環境を提供することを目的としたツールとライブラリのコレクションです。Windows上でPosix互換(Unix,Linuxのような)のコマンドを提供し、ビルドなどの手段を提供してくれます。
2.MSYS2とWSL2の違い
単純にLinuxが使いたい、という要望であれば、昨今はWSL2を用いることで達成できます。
しかし、Windows環境ではMSYS2を使うことにも利点があります。
ここで、MSYS2とWSL2を比較してみます。
比較内容 | MSYS2 | WSL2 |
---|---|---|
動作環境 | Windows上で動作 | 仮想マシン上で動作 |
バイナリ | Windowsネイティブのバイナリを使用 | Linuxのバイナリを使用 |
コマンド | Windows上でUnixコマンドを使用可能 | 仮想マシン上でLinuxコマンドを使用可能 |
開発環境 | Windowsアプリケーションを開発可能 | Linuxアプリケーションを開発可能 |
Posix互換性 | POSIX互換を提供するが完全ではない | 完全なPOSIX互換を提供する |
つまり、
MSYS2はWindows上でUnixライクな環境を利用しつつ、Windows向けのプログラムを開発したい場合に有益です。
WSL2はWindows上でLinux環境をそのまま利用したい場合に有益です。
3.MSYS2を使用するメリット
Unix/Linux系でよく用いられるbashやautotoolsが使用できることが大きなメリットと考えます。
OSSのソースコードをビルドする際に頻繁に使用されるconfigureをWindows上で利用できるのは非常に有益です。
4.MSYS2のインストール
4.1.MSYS2をダウンロードする
次のサイトより、MSYS2のインストール媒体をダウンロードします
ページを開いて少し下にあるDownload the Installerの横のリンクをクリックし、ファイルをダウンロードします。(筆者がダウンロードした際のファイル名はmsys2-x86_64-20241116.exeでした)
4.2.MSYS2をインストールする
ダウンロードしたファイルをダブルクリックして実行します。
「Next」ボタンを押下して次へ進みます。
インストール先を変更する場合は「Browse」ボタンよりインストール先を指定します。
変更しない、または変更が完了したら「Next」ボタンを押下して次へ進みます。
注意:指定したフォルダに半角スペースが含まれると、使用中に不具合が発生する場合があります。
スタートメニューの登録先を指定します。指定が完了したら「Next」ボタンを押下して次へ進みます。
インストールが実行されます。
インストールが完了しました。Run MSYS2 now.のチェックを外して、「Finish」ボタンを押下してください。ウィンドウが閉じ、インストールが終了します。
スタートメニューを開くと、5つのメニューが追加されています。
5.各シェルの違いについて
メニューが5つ追加されました。これはそれぞれ異なるシェルを起動するためのメニューになります。
ここでシェルの違いについて説明をしていきます。
シェル | 概要 | Windowsとのバイナリ互換 |
---|---|---|
MSYS2 MSYS | Unix向けソフトウェアのビルドに使用する | なし |
MSYS2 MINGW64 | 64Bit Windowsアプリケーションをgccでビルドするための環境 | あり |
MSYS2 UCRT64 | Universal C Runtime(UCRT)を使用して64Bit Windowsアプリケーションをgccでビルドするための環境 | あり |
MSYS2 CLANG64 | 64Bit WindowsアプリケーションをClangでビルドするための環境 | あり |
MSYS2 CLANGARM64 | ARM64(AArch64)アプリケーションをClangでビルドするための環境 | ARM64版Windowsで動作 |
分かりやすくまとめると:
・Windowsのプログラムを作成するにはMINGW64、UCRT64、またはCLANG64を使用します。
・gccを使うならMINGW64またはUCRT64、Clangを使うならCLANG64を使用します。
・MINGW64は古いC++規格(C++11以前)の開発向き、UCRT64は新しいC++規格(C++11以降)の開発向きです。
となります。
本稿ではgccを使い、新しいC++を使用することを想定し、UCRT64を用います。
もし、他の環境が必要な場合、個人の用途に合わせて読み替えを行ってください。
6.gccのインストール
UCRT64の環境にgccをインストールします。(gcc向け、と定義されているのに、デフォルトでは入っていないのです…)
MSYS2 UCRT64のメニューを選択し、シェルを起動します。
MSYS2ではArch Linuxで使用されているpacmanというパッケージマネージャが使用でき、これを用いてアプリケーションのインストールを行います。(RHEL系のdnf、debian系のaptのようなツールです)
まず、パッケージデータベースを最新の情報にするため、次のコマンドを実行します
pacman -Syu
更新を確認するメッセージが表示されるのでYを入力しEnterキーで先にすすめてください。
もし、再起動を促すメッセージが表示された場合、一度シェルを閉じて開きなおし、上記のコマンドを再度実行してください。
上記のような表示が出力され、更新が完了します。
今度は次のコマンドを実行し、gccをインストールします。
pacman -S --needed base-devel mingw-w64-ucrt-x86_64-toolchain
必要なツールチェーンをインストールしてよいか確認が表示されます。
Enterを押下して、インストールを実行します。
さらにパッケージのインストールを確認されるのでYを入力してEnterで処理を進めます。
パッケージのダウンロードとインストールが進みます。
特に問題が発生しなければインストールが完了します。
注意:筆者の環境では一度エラーが発生しましたが、再度コマンドを実行したところ正常にインストールが完了しました。
コマンドが正しくインストールできているか確認を行います。
gcc --version
g++ --version
make --version
コマンドが正常に実行され、バージョン情報が表示されればインストールは完了です。