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 には,MSYS, MINGW64, UCRT64 などのさまざまな環境がある (環境についての公式の説明は: https://www.msys2.org/docs/environments/).

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

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

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

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

    pacman -Syu
    

    * 質問には「y」+ Enter キー

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

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

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

      * 質問には「y」+ Enter キー

    3. 終わったら,msysを閉じる.
  16. Windows のシステム環境変数MSYSTEMを次のように設定
    MINGW64
    

    そのために,Windows で,コマンドプロンプト管理者権限で起動する(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択)

    次のコマンドを実行

    powershell -command "[System.Environment]::SetEnvironmentVariable(\"MSYSTEM\", \"MINGW64\", \"Machine\")"
    
  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\")"
    
  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」を選ぶ.

  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
    
  4. clang の動作確認

    Windows のコマンドプロンプトを開き,次を実行.

    結果として,「Hello,World!」「sizeof(size_t)=8」と表示されればOK.

    del a.exe
    clang hello.c
    .\a.exe
    

Flang の動作確認

  1. エディタを起動

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

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

    c:
    cd /d c:%HOMEPATH%
    notepad hello.f90
    
  2. いまメモ帳で開いたファイルを, 次のように編集する(コピー&ペーストしてください).そして保存する.
    program main
      print *, 'Hello,World!'
      stop
    end program main
    
  3. 次のコマンドを実行

    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 を起動してみる.エラーメッセージが無くなることが分かる.