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 等) のインストールを行う。

【目次】

  1. MSYS2 のダウンロードとインストール
  2. GNU ツールチェーン類 (gcc、g++、gfortran、gdb、make、ninja、ccache、svn 等) のインストール
  3. gcc、Clang の動作確認
  4. Flang の動作確認

【関連する外部ページ】

MSYS2 の環境について(公式ページ): https://www.msys2.org/docs/environments/

MSYS2 のダウンロードとインストール

MSYS2 は、ターミナル minttyシェル bash各種UNIX風コマンドの詰め合わせである。 pacmanコマンドを使ってパッケージの追加もできる。UNIX風コマンドとpacmanコマンドが便利である。

ここでの設定

インストール後に行う環境変数の設定

ダウンロードとインストールの手順

  1. MSYS2 のページを開く

    http://msys2.github.io/

  2. Download the installer のところをクリック
    MSYS2 ダウンロードページ
  3. ダウンロードが始まる。
    MSYS2 インストーラのダウンロード
  4. ダウンロードした .exe ファイルを実行
  5. ようこそ画面では、「次へ」をクリックする。
    MSYS2 インストーラのようこそ画面
  6. インストールディレクトリ(フォルダ)は既定(デフォルト)のままでよい。「次へ」をクリックする。
    MSYS2 インストールディレクトリの設定
  7. スタートメニューのショートカットは、既定(デフォルト)のままでよい。「次へ」をクリックする。
    MSYS2 スタートメニューの設定
  8. インストールが始まる。
    MSYS2 インストール中
  9. インストール終了の確認。「完了」をクリックする。
    MSYS2 インストール完了
  10. インストール直後は、mintty、bash が自動起動するので確認する。
    MSYS2 の自動起動
  11. MSYS2 MINGW64 を実行する

    スタートメニューで、「MSYS2」の下の「MSYS2 MINGW64」を選ぶ。

    MSYS2 MINGW64 の起動
  12. 念のため、この画面で環境変数の値を確認する。
    echo $MSYSTEM
    echo $PATH
    echo $PKG_CONFIG_PATH
    
    環境変数の確認
  13. パッケージデータベースと pacman とコアパッケージの更新

    いま開いたmsysで次のコマンドを実行する

    pacman -Syu
    

    質問には「y」+ Enter キー

    pacman によるパッケージ更新
  14. 終了時に「... [Y/n]」と表示された場合は「y」+ Enter キー
    パッケージ更新の確認
  15. パッケージの更新
    1. MSYS2 MINGW64 を実行する

      スタートメニューで、「MSYS2」の下の「MSYS2 MINGW64」を選ぶ。

      MSYS2 MINGW64 の起動
    2. いま開いたmsysで次のコマンドを実行する
      pacman -Su
      

      質問には「y」+ Enter キー

      パッケージの更新
    3. 終わったら、msysを閉じる。
      MSYS2 の終了
  16. Windows のシステム環境変数MSYSTEMを次のように設定
    MINGW64
    

    そのために、Windows で、管理者権限コマンドプロンプトを起動(手順:Windowsキーまたはスタートメニュー > cmd と入力 > 右クリック > 「管理者として実行」)する。

    次のコマンドを実行する

    powershell -command "[System.Environment]::SetEnvironmentVariable(\"MSYSTEM\", \"MINGW64\", \"Machine\")"
    
    システム環境変数 MSYSTEM の設定
  17. 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\")"
    
    システム環境変数 Path の設定
  18. 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 のインストールが終わっていること。

ダウンロードとインストールの手順

  1. MSYS2 MINGW64 を実行する

    スタートメニューで、「MSYS2」の下の「MSYS2 MINGW64」を選ぶ。

    MSYS2 MINGW64 の起動
  2. 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 <キーワード>で検索できる。

  3. パスが通っていることを確認する

    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)。

    パスの確認結果

    次のようなエラーメッセージが出るなどのときは、システム環境変数Pathの設定を確認し修正した後、Windows のコマンドプロンプトを開き直す。

    エラーメッセージの例

gcc、Clang の動作確認

  1. エディタを起動

    ここではメモ帳 (notepad) を使っている。

    Windowsコマンドプロンプトを開く。 そして、次のように実行して、プログラムファイルを作る。 そのファイル名は hello.c としている。

    c:
    cd /d c:%HOMEPATH%
    notepad hello.c
    
    エディタの起動
  2. いまメモ帳で開いたファイルを、 次のように編集する(コピー&ペーストする)。そして保存する。
    #include<stdio.h>
    int main() {
        printf("Hello,World!\n");
        printf("sizeof(size_t)=%ld\n", sizeof(size_t));
        return 0;
    }
    
    プログラムの編集
  3. gcc の動作確認

    Windows のコマンドプロンプトを開き、次を実行する。

    結果として、「Hello,World!」「sizeof(size_t)=8」と表示されればOKである。

    del a.exe
    gcc hello.c
    .\a.exe
    
    gcc の動作確認
  4. clang の動作確認

    Windows のコマンドプロンプトを開き、次を実行する。

    結果として、「Hello,World!」「sizeof(size_t)=8」と表示されればOKである。

    del a.exe
    clang hello.c
    .\a.exe
    
    clang の動作確認

Flang の動作確認

  1. エディタを起動

    ここではメモ帳 (notepad) を使っている。

    Windowsコマンドプロンプトを開き、次のコマンドを実行する。 ファイル名は hello.f90 としている。

    c:
    cd /d c:%HOMEPATH%
    notepad hello.f90
    
    エディタの起動
  2. いまメモ帳で開いたファイルを、 次のように編集する(コピー&ペーストする)。そして保存する。
    program main
      print *, 'Hello,World!'
      stop
    end program main
    
    Fortran プログラムの編集
  3. 次のコマンドを実行

    x64 Native Tools コマンドプロンプトを使うこと。

    結果として、「Hello,World!」と表示されればOKである。

    del hello.exe
    flang-new hello.f90 -o hello.exe
    .\hello.exe
    

    実行結果例

    Flang の動作確認

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 のバージョンが間違っていることが分かる。 次のように書き直す。

gdbinit の修正

もう一度 gdb を起動してみる。エラーメッセージが無くなることが分かる。