MSYS2 のインストールと、MINGW64 環境で動く LLVM(Clang、Flang、LLD、LLDB)とGNU ツールチェーン類 (gcc、g++、gfortran、gdb、make、ninja、ccache、svn 等) のインストール(MSYS2 を利用)(Windows 上)
【概要】Windows での MSYS2 と GNU ツールチェーン類(gcc など)のインストール手順を説明する。MSYS2 は、ターミナル mintty とシェル bash と各種UNIX風コマンドの詰め合わせである。このページでは、MSYS2 のベースと、MINGW64環境の LLVM(Clang、Flang、LLD、LLDB)とGNU ツールチェーン類 (gcc、g++、gfortran、gdb、make、ninja、ccache、svn 等) のインストールを行う。
【目次】
- MSYS2 のダウンロードとインストール
- GNU ツールチェーン類 (gcc、g++、gfortran、gdb、make、ninja、ccache、svn 等) のインストール
- gcc、Clang の動作確認
- Flang の動作確認
【関連する外部ページ】
MSYS2 の環境について(公式ページ): https://www.msys2.org/docs/environments/
MSYS2 のダウンロードとインストール
MSYS2 は、ターミナル mintty とシェル bash と各種UNIX風コマンドの詰め合わせである。 pacmanコマンドを使ってパッケージの追加もできる。UNIX風コマンドとpacmanコマンドが便利である。
ここでの設定
- インストールディレクトリ: C:\msys64
インストール後に行う環境変数の設定
- システム環境変数MSYSTEM: MINGW64
- Windows の システム環境変数Pathの末尾に追加:
- C:\msys64\mingw64\bin
- C:\msys64\usr\local\bin
- C:\msys64\usr\bin
- C:\msys64\bin
- C:\msys64\opt\bin
ダウンロードとインストールの手順
- MSYS2 のページを開く
- Download the installer のところをクリック
- ダウンロードが始まる。
- ダウンロードした .exe ファイルを実行
- ようこそ画面では、「次へ」をクリックする。
- インストールディレクトリ(フォルダ)は既定(デフォルト)のままでよい。「次へ」をクリックする。
- スタートメニューのショートカットは、既定(デフォルト)のままでよい。「次へ」をクリックする。
- インストールが始まる。
- インストール終了の確認。「完了」をクリックする。
- インストール直後は、mintty、bash が自動起動するので確認する。
- MSYS2 MINGW64 を実行する
スタートメニューで、「MSYS2」の下の「MSYS2 MINGW64」を選ぶ。
- 念のため、この画面で環境変数の値を確認する。
echo $MSYSTEM echo $PATH echo $PKG_CONFIG_PATH
- パッケージデータベースと pacman とコアパッケージの更新
いま開いたmsysで次のコマンドを実行する
pacman -Syu質問には「y」+ Enter キー
- 終了時に「... [Y/n]」と表示された場合は「y」+ Enter キー
- パッケージの更新
- MSYS2 MINGW64 を実行する
スタートメニューで、「MSYS2」の下の「MSYS2 MINGW64」を選ぶ。
- いま開いたmsysで次のコマンドを実行する
pacman -Su質問には「y」+ Enter キー
- 終わったら、msysを閉じる。
- MSYS2 MINGW64 を実行する
- Windows のシステム環境変数MSYSTEMを次のように設定
MINGW64そのために、Windows で、管理者権限でコマンドプロンプトを起動(手順:Windowsキーまたはスタートメニュー >
cmdと入力 > 右クリック > 「管理者として実行」)する。次のコマンドを実行する
powershell -command "[System.Environment]::SetEnvironmentVariable(\"MSYSTEM\", \"MINGW64\", \"Machine\")"
- Windows のシステム環境変数Pathに次の5つを追加することにより、パスを通す。
- C:\msys64\mingw64\bin
- C:\msys64\usr\local\bin
- C:\msys64\usr\bin
- C:\msys64\bin
- C:\msys64\opt\bin
そのために、Windows で、管理者権限でコマンドプロンプトを起動(手順:Windowsキーまたはスタートメニュー >
cmdと入力 > 右クリック > 「管理者として実行」)する。次のコマンドを実行する
powershell -command "$oldpath = [System.Environment]::GetEnvironmentVariable(\"Path\", \"Machine\"); $oldpath += \";C:\msys64\mingw64\bin\"; [System.Environment]::SetEnvironmentVariable(\"Path\", $oldpath, \"Machine\")" powershell -command "$oldpath = [System.Environment]::GetEnvironmentVariable(\"Path\", \"Machine\"); $oldpath += \";C:\msys64\usr\local\bin\"; [System.Environment]::SetEnvironmentVariable(\"Path\", $oldpath, \"Machine\")" powershell -command "$oldpath = [System.Environment]::GetEnvironmentVariable(\"Path\", \"Machine\"); $oldpath += \";C:\msys64\usr\bin\"; [System.Environment]::SetEnvironmentVariable(\"Path\", $oldpath, \"Machine\")" powershell -command "$oldpath = [System.Environment]::GetEnvironmentVariable(\"Path\", \"Machine\"); $oldpath += \";C:\msys64\bin\"; [System.Environment]::SetEnvironmentVariable(\"Path\", $oldpath, \"Machine\")" powershell -command "$oldpath = [System.Environment]::GetEnvironmentVariable(\"Path\", \"Machine\"); $oldpath += \";C:\msys64\opt\bin\"; [System.Environment]::SetEnvironmentVariable(\"Path\", $oldpath, \"Machine\")"
- bash、ls にパスが通っていることを確認する
そのために、新しく Windows のコマンドプロンプトを開き、次のコマンドを実行する。
エラーメッセージが出なければOKである。
where bash where ls
LLVM(Clang、Flang、LLD、LLDB)とGNU ツールチェーン類 (gcc、g++、gfortran、gdb、make、ninja、ccache、svn 等) のインストール
MSYS2 に gcc、g++ (C言語、C++言語処理系) やその他のツールチェーンを、パッケージを使ってインストールする。
事前準備
MSYS2 のインストールが終わっていること。
ダウンロードとインストールの手順
- MSYS2 MINGW64 を実行する
スタートメニューで、「MSYS2」の下の「MSYS2 MINGW64」を選ぶ。
- MSYS2 でGNU ツールチェーン類 (gcc、g++、gfortran、gdb、make、ninja、ccache、svn 等) のインストールのインストール
次のコマンドを1つずつ実行する。
「Enter a selection (defaulit=all)」という質問には既定(デフォルト)のままでよいので、Enter キーを押す。
「Proceed with installation? [Y/n]」という質問にはインストールを続けたいので、Y、Enter キーを押す。
pacman -Sy --needed base-devel pacman -Sy --needed msys2-devel pacman -Sy --needed mingw-w64-x86_64-toolchain pacman -Sy --needed mingw-w64-x86_64-boost pacman -Sy --needed mingw-w64-x86_64-ninja pacman -Sy --needed mingw-w64-x86_64-libtool pacman -Sy --needed mingw-w64-x86_64-ccache pacman -Sy --needed mingw-w64-x86_64-clang pacman -Sy --needed mingw-w64-x86_64-flang pacman -Sy --needed mingw-w64-x86_64-lld pacman -Sy --needed mingw-w64-x86_64-lldb pacman -Sy --needed autoconf pacman -Sy --needed git pacman -Sy --needed subversion pacman -Sy --needed findutils pacman -Sy --needed ncurses-devel「選択してください (デフォルト = all)」に対しては Enter キーを押す。
「インストールを行いますか? [Y/n] (Proceed with installation? [Y/n])」に対しては、y + Enter キーを押す。
コマンドを1つずつ実行するたびに、エラーメッセージが出ていないことを確認する。
msys のパッケージは pacman -Ss <キーワード>で検索できる。
- パスが通っていることを確認する
Windows のコマンドプロンプトを開き、次のコマンドを実行する。
エラーメッセージが出なければOKである。
where gcc where g++ where gfortran where gdb where make where ninja where ccache where svn where locate where clang where flang-new where lld where lldb次のような結果が出るはずである(必ずしも、ぴったりは一致しない。エラーメッセージが出なければ OK)。
gcc、Clang の動作確認
- エディタを起動
ここではメモ帳 (notepad) を使っている。
Windows のコマンドプロンプトを開く。 そして、次のように実行して、プログラムファイルを作る。 そのファイル名は hello.c としている。
c: cd /d c:%HOMEPATH% notepad hello.c
- いまメモ帳で開いたファイルを、
次のように編集する(コピー&ペーストする)。そして保存する。
#include<stdio.h> int main() { printf("Hello,World!\n"); printf("sizeof(size_t)=%ld\n", sizeof(size_t)); return 0; }
- gcc の動作確認
Windows のコマンドプロンプトを開き、次を実行する。
結果として、「Hello,World!」「sizeof(size_t)=8」と表示されればOKである。
del a.exe gcc hello.c .\a.exe
- clang の動作確認
Windows のコマンドプロンプトを開き、次を実行する。
結果として、「Hello,World!」「sizeof(size_t)=8」と表示されればOKである。
del a.exe clang hello.c .\a.exe
Flang の動作確認
- エディタを起動
ここではメモ帳 (notepad) を使っている。
Windows のコマンドプロンプトを開き、次のコマンドを実行する。 ファイル名は hello.f90 としている。
c: cd /d c:%HOMEPATH% notepad hello.f90
- いまメモ帳で開いたファイルを、
次のように編集する(コピー&ペーストする)。そして保存する。
program main print *, 'Hello,World!' stop end program main
- 次のコマンドを実行
x64 Native Tools コマンドプロンプトを使うこと。
結果として、「Hello,World!」と表示されればOKである。
del hello.exe flang-new hello.f90 -o hello.exe .\hello.exe実行結果例
msys2 に付属の gdb での、起動時のエラーに関する対処例
msys2 の gdb 起動するとき、次のようなエラーメッセージが出ることがある。
ImportError: No module named libstdcxx.v6.printers
/etc/gdbinit:6: Error in sourced command file:
Error while executing Python code.
エラーメッセージから「gdbinit」に原因があると手掛かりが得られた。 C:\msys64\etc\gdbinit をエディタで開く。 すると、gcc のバージョンが間違っていることが分かる。 次のように書き直す。
もう一度 gdb を起動してみる。エラーメッセージが無くなることが分かる。