Help us understand the problem. What is going on with this article?

MSYS2 による gcc 開発環境の構築

More than 3 years have passed since last update.

MSYS の後継(?)とも言える MSYS2 では開発環境を 32bit と 64bit で併設できるらしい。

追記

最近来られた方,古い記事でごめんなさい。
この記事については私のブログでフォローしています。
こちらの記事で分かりにくければ向こうも参考にしてください。

MSYS2 のインストール

MSYS2 installer” の案内に従って 64bit 版のインストーラを取得してインストールする。以下,スナップショット

MSYS2 Installation 1

わお! 日本語だ。

MSYS2 Installation 2

MSYS2 Installation 3

MSYS2 Installation 4

インストーラが終了するとターミナル(mintty)が起動する。以降はテキストで。

まずはパッケージ管理ツールのアップデートから

$ pacman --needed -Sy bash pacman pacman-mirrors msys2-runtime
:: パッケージデータベースの同期中...
 mingw32                  238.7 KiB   925K/s 00:00 [#####################] 100%
 mingw32.sig               96.0   B  0.00B/s 00:00 [#####################] 100%
 mingw64                  239.3 KiB  3.44M/s 00:00 [#####################] 100%
 mingw64.sig               96.0   B  0.00B/s 00:00 [#####################] 100%
 msys                     126.4 KiB  3.17M/s 00:00 [#####################] 100%
 msys.sig                  96.0   B  0.00B/s 00:00 [#####################] 100%
警告: pacman-mirrors-20141223-1 は最新です -- スキップ
警告: msys2-runtime-2.1.0.16359.acadff9-1 は最新です -- スキップ
依存関係を解決しています...
衝突するパッケージがないか確認しています...

パッケージ (2) bash-4.3.039-1  pacman-4.2.1.6157.6e6093b-1

合計ダウンロード容量:   5.58 MiB
合計インストール容量:  34.55 MiB
最終的なアップグレード容量:   0.03 MiB

:: インストールを行いますか? [Y/n] y
:: パッケージを取得します ...
 bash-4.3.039-1-x86_64   1864.8 KiB  3.47M/s 00:01 [#####################] 100%
 pacman-4.2.1.6157.6...     3.8 MiB  3.54M/s 00:01 [#####################] 100%
(2/2) キーリングのキーを確認                       [#####################] 100%
(2/2) パッケージの整合性をチェック                 [#####################] 100%
(2/2) パッケージファイルのロード                   [#####################] 100%
(2/2) ファイルの衝突をチェック                     [#####################] 100%
(2/2) 空き容量を確認                               [#####################] 100%
(1/2) 更新 bash                                    [#####################] 100%
(2/2) 更新 pacman                                  [#####################] 100%

おっと! bash も更新されてしまった。ではターミナルを再起動(インストールフォルダにある msys2_shell.bat を起動する)。

$ pacman -Syu
:: パッケージデータベースの同期中...
 mingw32 は最新です
 mingw64 は最新です
 msys は最新です
:: システム全体の更新を開始...
依存関係を解決しています...
衝突するパッケージがないか確認しています...

パッケージ (1) gawk-4.1.3-1

合計ダウンロード容量:  0.93 MiB
合計インストール容量:  2.74 MiB
最終的なアップグレード容量:  0.01 MiB

:: インストールを行いますか? [Y/n] y
:: パッケージを取得します ...
 gawk-4.1.3-1-x86_64      951.1 KiB  1865K/s 00:01 [#####################] 100%
(1/1) キーリングのキーを確認                       [#####################] 100%
(1/1) パッケージの整合性をチェック                 [#####################] 100%
(1/1) パッケージファイルのロード                   [#####################] 100%
(1/1) ファイルの衝突をチェック                     [#####################] 100%
(1/1) 空き容量を確認                               [#####################] 100%
(1/1) 更新 gawk                                    [#####################] 100%

これでパッケージの更新は完了。

MSYS2 installer” の通りに,試しに git をインストールしようとしたらエラいことに(笑)

$ pacman -S git
依存関係を解決しています...
衝突するパッケージがないか確認しています...

パッケージ (39) db-5.3.28-2  expat-2.1.0-2  gdbm-1.11-3  heimdal-1.5.3-6
                heimdal-libs-1.5.3-6  icu-51.2-2  libdb-5.3.28-2
                libedit-3.1-20130712  libgdbm-1.11-3  libsqlite-3.8.8.2-1
                openssh-6.7p1-1  perl-5.20.2-1  perl-Authen-SASL-2.16-2
                perl-Convert-BinHex-1.123-2  perl-Encode-Locale-1.03-2
                perl-Error-0.17023-1  perl-File-Listing-6.04-2
                perl-HTML-Parser-3.71-2  perl-HTML-Tagset-3.20-2
                perl-HTTP-Cookies-6.01-2  perl-HTTP-Daemon-6.01-2
                perl-HTTP-Date-6.02-2  perl-HTTP-Message-6.06-2
                perl-HTTP-Negotiate-6.01-2  perl-IO-Socket-SSL-2.008-1
                perl-IO-stringy-2.110-2  perl-LWP-MediaTypes-6.02-2
                perl-MIME-tools-5.505-2  perl-MailTools-2.13-2
                perl-Net-HTTP-6.06-2  perl-Net-SMTP-SSL-1.01-2
                perl-Net-SSLeay-1.64-1  perl-TermReadKey-2.32-2
                perl-TimeDate-2.30-2  perl-URI-1.65-1  perl-WWW-RobotRules-6.02-2
                perl-libwww-6.08-1  vim-7.4.728-1  git-2.4.1-1

合計ダウンロード容量:   30.29 MiB
合計インストール容量:  134.32 MiB

:: インストールを行いますか? [Y/n] y
:: パッケージを取得します ...
 expat-2.1.0-2-x86_64              13.1 KiB  6.39M/s 00:00 [#############] 100%
 libdb-5.3.28-2-x86_64            656.4 KiB   714K/s 00:01 [#############] 100%
 db-5.3.28-2-x86_64                41.7 KiB   221K/s 00:00 [#############] 100%
 libgdbm-1.11-3-x86_64             20.4 KiB   214K/s 00:00 [#############] 100%
 gdbm-1.11-3-x86_64               108.5 KiB   359K/s 00:00 [#############] 100%
 perl-5.20.2-1-x86_64              10.7 MiB  2.75M/s 00:04 [#############] 100%
 perl-Error-0.17023-1-any          18.3 KiB  17.9M/s 00:00 [#############] 100%
 vim-7.4.728-1-x86_64               5.9 MiB  3.36M/s 00:02 [#############] 100%
 icu-51.2-2-x86_64                  6.0 MiB  1339K/s 00:05 [#############] 100%
 libsqlite-3.8.8.2-1-x86_64       399.1 KiB  1339K/s 00:00 [#############] 100%
 heimdal-libs-1.5.3-6-x86_64      583.9 KiB  3.41M/s 00:00 [#############] 100%
 heimdal-1.5.3-6-x86_64           534.3 KiB  3.14M/s 00:00 [#############] 100%
 libedit-3.1-20130712-x86_64       74.8 KiB  44.3K/s 00:02 [#############] 100%
 openssh-6.7p1-1-x86_64           665.5 KiB   286K/s 00:02 [#############] 100%
 perl-Authen-SASL-2.16-2-any       42.4 KiB  77.5K/s 00:01 [#############] 100%
 perl-Encode-Locale-1.03-2-any     10.0 KiB  4.87M/s 00:00 [#############] 100%
 perl-HTTP-Date-6.02-2-any          8.6 KiB  8.42M/s 00:00 [#############] 100%
 perl-File-Listing-6.04-2-any       7.7 KiB  3.76M/s 00:00 [#############] 100%
 perl-HTML-Tagset-3.20-2-any       10.3 KiB  5.01M/s 00:00 [#############] 100%
 perl-HTML-Parser-3.71-2-x86_64    81.6 KiB  93.6K/s 00:01 [#############] 100%
 perl-LWP-MediaTypes-6.02-2-any    18.0 KiB  62.9K/s 00:00 [#############] 100%
 perl-URI-1.65-1-any               82.6 KiB   276K/s 00:00 [#############] 100%
 perl-HTTP-Message-6.06-2-any      71.3 KiB  83.1K/s 00:01 [#############] 100%
 perl-HTTP-Cookies-6.01-2-any      20.4 KiB  74.9K/s 00:00 [#############] 100%
 perl-HTTP-Daemon-6.01-2-any       14.2 KiB  49.9K/s 00:00 [#############] 100%
 perl-HTTP-Negotiate-6.01-2-any    11.4 KiB  5.58M/s 00:00 [#############] 100%
 perl-Net-HTTP-6.06-2-any          20.9 KiB  10.1K/s 00:02 [#############] 100%
 perl-WWW-RobotRules-6.02-2-any    12.2 KiB  5.98M/s 00:00 [#############] 100%
 perl-libwww-6.08-1-any           132.1 KiB   118K/s 00:01 [#############] 100%
 perl-TimeDate-2.30-2-any          35.9 KiB  64.1K/s 00:01 [#############] 100%
 perl-MailTools-2.13-2-any         66.1 KiB  78.2K/s 00:01 [#############] 100%
 perl-IO-stringy-2.110-2-any       58.1 KiB  98.7K/s 00:01 [#############] 100%
 perl-Convert-BinHex-1.123-2-any   30.1 KiB   108K/s 00:00 [#############] 100%
 perl-MIME-tools-5.505-2-any      194.4 KiB   137K/s 00:01 [#############] 100%
 perl-Net-SSLeay-1.64-1-x86_64    187.3 KiB   133K/s 00:01 [#############] 100%
 perl-IO-Socket-SSL-2.008-1-any   111.8 KiB   565K/s 00:00 [#############] 100%
 perl-Net-SMTP-SSL-1.01-2-any       4.2 KiB  4.13M/s 00:00 [#############] 100%
 perl-TermReadKey-2.32-2-x86_64    21.9 KiB  77.8K/s 00:00 [#############] 100%
 git-2.4.1-1-x86_64                 3.4 MiB  4.08M/s 00:01 [#############] 100%
(39/39) キーリングのキーを確認                             [#############] 100%
(39/39) パッケージの整合性をチェック                       [#############] 100%
(39/39) パッケージファイルのロード                         [#############] 100%
(39/39) ファイルの衝突をチェック                           [#############] 100%
(39/39) 空き容量を確認                                     [#############] 100%
( 1/39) インストール expat                                 [#############] 100%
( 2/39) インストール libdb                                 [#############] 100%
( 3/39) インストール db                                    [#############] 100%
( 4/39) インストール libgdbm                               [#############] 100%
( 5/39) インストール gdbm                                  [#############] 100%
( 6/39) インストール perl                                  [#############] 100%
( 7/39) インストール perl-Error                            [#############] 100%
( 8/39) インストール vim                                   [#############] 100%
( 9/39) インストール icu                                   [#############] 100%
(10/39) インストール libsqlite                             [#############] 100%
(11/39) インストール heimdal-libs                          [#############] 100%
(12/39) インストール heimdal                               [#############] 100%
(13/39) インストール libedit                               [#############] 100%
(14/39) インストール openssh                               [#############] 100%
(15/39) インストール perl-Authen-SASL                      [#############] 100%
(16/39) インストール perl-Encode-Locale                    [#############] 100%
(17/39) インストール perl-HTTP-Date                        [#############] 100%
(18/39) インストール perl-File-Listing                     [#############] 100%
(19/39) インストール perl-HTML-Tagset                      [#############] 100%
(20/39) インストール perl-HTML-Parser                      [#############] 100%
(21/39) インストール perl-LWP-MediaTypes                   [#############] 100%
(22/39) インストール perl-URI                              [#############] 100%
(23/39) インストール perl-HTTP-Message                     [#############] 100%
(24/39) インストール perl-HTTP-Cookies                     [#############] 100%
(25/39) インストール perl-HTTP-Daemon                      [#############] 100%
(26/39) インストール perl-HTTP-Negotiate                   [#############] 100%
(27/39) インストール perl-Net-HTTP                         [#############] 100%
(28/39) インストール perl-WWW-RobotRules                   [#############] 100%
(29/39) インストール perl-libwww                           [#############] 100%
perl-libwww の提案パッケージ
    perl-LWP-Protocol-HTTPS: for https:// url schemes
(30/39) インストール perl-TimeDate                         [#############] 100%
(31/39) インストール perl-MailTools                        [#############] 100%
(32/39) インストール perl-IO-stringy                       [#############] 100%
(33/39) インストール perl-Convert-BinHex                   [#############] 100%
module test... pass.
(34/39) インストール perl-MIME-tools                       [#############] 100%
(35/39) インストール perl-Net-SSLeay                       [#############] 100%
(36/39) インストール perl-IO-Socket-SSL                    [#############] 100%
(37/39) インストール perl-Net-SMTP-SSL                     [#############] 100%
(38/39) インストール perl-TermReadKey                      [#############] 100%
(39/39) インストール git                                   [#############] 100%
git の提案パッケージ
    python2: various helper scripts
    subversion: git svn

てか,本当に最小限しか入ってないんだな(笑) python2 と subversion を提案されてしまったが,これはまた今度。

MSYS2 起動モード

MSYS2 の起動バッチには以下の3つがある(64bit 版をインストールした場合)

  • mingw32_shell.bat
  • mingw64_shell.bat
  • msys2_shell.bat

中身はターミナルエミュレータ(既定で mintty)の場所を探して起動するだけだが,環境変数 MSYSTEM にそれぞれ以下の値をセットしている

バッチファイル セットする値
mingw32_shell.bat MINGW32
mingw64_shell.bat MINGW64
msys2_shell.bat MSYS

環境変数 MSYSTEM/etc/profile 内で参照される。

profile
MSYS2_PATH="/usr/local/bin:/usr/bin:/bin"
MANPATH="/usr/local/man:/usr/share/man:/usr/man:/share/man:${MANPATH}"
INFOPATH="/usr/local/info:/usr/share/info:/usr/info:/share/info:${INFOPATH}"
MINGW_MOUNT_POINT=
if [ -n "$MSYSTEM" ]
then
  case "$MSYSTEM" in
    MINGW32)
      MINGW_MOUNT_POINT=/mingw32
      PATH="${MINGW_MOUNT_POINT}/bin:${MSYS2_PATH}:${PATH}"
      PKG_CONFIG_PATH="${MINGW_MOUNT_POINT}/lib/pkgconfig:${MINGW_MOUNT_POINT}/share/pkgconfig"
      ACLOCAL_PATH="${MINGW_MOUNT_POINT}/share/aclocal:/usr/share/aclocal"
      MANPATH="${MINGW_MOUNT_POINT}/share/man:${MANPATH}"
    ;;
    MINGW64)
      MINGW_MOUNT_POINT=/mingw64
      PATH="${MINGW_MOUNT_POINT}/bin:${MSYS2_PATH}:${PATH}"
      PKG_CONFIG_PATH="${MINGW_MOUNT_POINT}/lib/pkgconfig:${MINGW_MOUNT_POINT}/share/pkgconfig"
      ACLOCAL_PATH="${MINGW_MOUNT_POINT}/share/aclocal:/usr/share/aclocal"
      MANPATH="${MINGW_MOUNT_POINT}/share/man:${MANPATH}"
    ;;
    MSYS)
      PATH="${MSYS2_PATH}:/opt/bin:${PATH}"
      PKG_CONFIG_PATH="/usr/lib/pkgconfig:/usr/share/pkgconfig:/lib/pkgconfig"
    ;;
    *)
      PATH="${MSYS2_PATH}:${PATH}"
    ;;
  esac
else
  PATH="${MSYS2_PATH}:${PATH}"
fi

MINGW32 または MINGW64 の場合は,新たに /mingw32 または /mingw64 がパス等に追加されているのが分かるだろう。

各モードはインストール元のリポジトリと関連している。

バッチファイルのチューニング

上述の /etc/profile に書かれている通り MSYS2 では Windows の PATH も取り込むが,実際には MSYS2 上で動いてほしくないものもあるので,バッチファイル内で PATH を潰すか,または以下のように

msys2_shell.bat
set PATH=%SystemRoot%System32

必要なものだけ再設定する。 Windows 上の特定のツールを使いたい場合はフルパス(もしくはその alias)で指定するか, /etc/fstab でマウントするほうがスマート。

MSYS2 のホームディレクトリは,インストールフォルダ直下の home\username フォルダになるが, Windows 上で自前のホームディレクトリを作っている場合は,その場所を /etc/fstab でマウントする手もある。

fstab
C:/home     /home

この場合,元のフォルダにある .profile ファイル等の移動も忘れないこと。

MSYS2 のパッケージ管理

MSYS2 では pacman でパッケージ管理を行うらしい。
pacman は元々 Arch Linux のパッケージ管理ツールで,使い方もこれと同じようだ。

よく使うコマンドとしては

  • pacman -S <package_name1> [package_name2...] : 指定したパッケージをインストールする
  • pacman -Sl [repository] : パッケージを一覧表示する(リポジトリを指定可能)
  • pacman -Ss [regex...] : パッケージを一覧・検索する(キーワードを指定可能)
  • pacman -Su : インストール済みのパッケージを更新する
  • pacman -Sy : パッケージのデータベースを更新する
  • pacman -Syu : -Su, -Sy の同時指定
  • pacman -Q [package_name...] : インストール済みパッケージを一覧・検索する(パッケージを指定可能)
  • pacman -Qs [regex...] : インストール済みパッケージを一覧・検索する(をキーワードを指定可能)
  • pacman -R <package_name> : 指定したパッケージを削除する
  • pacman -Rs <package_name> : 依存関係を含めて指定したパッケージを削除する(指定したパッケージにのみ依存するパッケージを削除)

あたりか。

MSYS2 のリポジトリ

/etc/pacman.conf を見ると MSYS2 では mingw32, mingw64, msys の3つのリポジトリを管理していることが分かる。

$arch はインストールした MSYS2 のアーキテクチャによって異なる。 64bit 版を入れた場合は x86_64 になる筈である。

例えば,以下に示すように gcc もリポジトリごとにそれぞれある。

$ pacman -Sl | grep gcc
mingw32 mingw-w64-i686-gcc 4.9.2-5
mingw32 mingw-w64-i686-gcc-ada 4.9.2-5
mingw32 mingw-w64-i686-gcc-ada-debug 4.9.1-3
mingw32 mingw-w64-i686-gcc-debug 4.9.1-3
mingw32 mingw-w64-i686-gcc-fortran 4.9.2-5
mingw32 mingw-w64-i686-gcc-fortran-debug 4.9.1-3
mingw32 mingw-w64-i686-gcc-libgfortran 4.9.2-5
mingw32 mingw-w64-i686-gcc-libgfortran-debug 4.9.1-3
mingw32 mingw-w64-i686-gcc-libs 4.9.2-5
mingw32 mingw-w64-i686-gcc-libs-debug 4.9.1-3
mingw32 mingw-w64-i686-gcc-objc 4.9.2-5
mingw32 mingw-w64-i686-gcc-objc-debug 4.9.1-3
mingw64 mingw-w64-x86_64-gcc 4.9.2-5
mingw64 mingw-w64-x86_64-gcc-ada 4.9.2-5
mingw64 mingw-w64-x86_64-gcc-ada-debug 4.9.1-3
mingw64 mingw-w64-x86_64-gcc-debug 4.9.1-3
mingw64 mingw-w64-x86_64-gcc-fortran 4.9.2-5
mingw64 mingw-w64-x86_64-gcc-fortran-debug 4.9.1-3
mingw64 mingw-w64-x86_64-gcc-libgfortran 4.9.2-5
mingw64 mingw-w64-x86_64-gcc-libgfortran-debug 4.9.1-3
mingw64 mingw-w64-x86_64-gcc-libs 4.9.2-5
mingw64 mingw-w64-x86_64-gcc-libs-debug 4.9.1-3
mingw64 mingw-w64-x86_64-gcc-objc 4.9.2-5
mingw64 mingw-w64-x86_64-gcc-objc-debug 4.9.1-3
msys gcc 4.9.2-4
msys gcc-fortran 4.9.2-4
msys gcc-libs 4.9.2-4
msys mingw-w64-cross-gcc 4.9.2-2

どれを使うかはユーザ次第だが, msys の方は開発用というより MSYS2 ビルド用という感じである(微妙にバージョンが古い)。 gcc を 32bit 版と 64bit 版で使い分ける場合は msys 版は入れないほうがいいかもしれない。

gcc のインストール

gcc のスレッドモデルと例外処理

mingw32 または mingw64 で提供される gcc では,スレッドモデルと例外処理は以下のようになっているらしい。
(「MSYS2 / Tickets / #24 Mingw64 downloads through msys2?」より)

On MSYS2 I maintain only one configuration:
32-bit: threads=posix, exceptions=dwarf
64-bit: threads=posix, exceptions=seh

MSYS2 のベースになっている MinGW-w64 のスレッドモデルには win32 と posix が提供されている。 win32 は Windows ネイティブなスレッド関連関数を使っているため速いが, C++11 の thread, mutex, future はサポートしていないらしい。

例外処理には SJLJ(SetJump/LongJump), DWARF2, SEH(Structured Exception Handling)があり,この中では Windows ネイティブな SEH が一番速い。ただし SEH は 64bit gcc でしか対応していないため 32bit 環境では使えない。

MinGW-w64 ではインストール時にスレッドモデルと例外処理を選択できる。

MinGW-w64 のもうひとつの実装である TDM-GCC では,スレッドモデルには posix,例外処理には SJLJ(32bit)または SEH(64bit)が設定されているようだ。
(“TDM-GCC : Quirks” より)

TDM-GCC includes a pthreads emulation layer for Microsoft Windows systems, called "winpthreads". This lets you use std::thread and other C++11 concurrency features in your programs, out of the box.

64-bit binaries use "SEH", which stands for "Structured Exception Handling".

If you create a 32-bit binary with the TDM64 edition, it will use SJLJ exception handling. DW2 exception handling is not available in this edition.

MSYS2 関連ツールのインストール

まずは msys2_shell.bat でターミナルを起動する。

開発用に必要なツールをインストールする(上述の git インストールでインストールされなかったもの)。

$ pacman -S patch 
依存関係を解決しています...
衝突するパッケージがないか確認しています...

パッケージ (1) patch-2.7.5-1

合計ダウンロード容量:  0.07 MiB
合計インストール容量:  0.15 MiB

:: インストールを行いますか? [Y/n] y
:: パッケージを取得します ...
 patch-2.7.5-1-x86_64      75.9 KiB   460K/s 00:00 [#####################] 100%
(1/1) キーリングのキーを確認                       [#####################] 100%
(1/1) パッケージの整合性をチェック                 [#####################] 100%
(1/1) パッケージファイルのロード                   [#####################] 100%
(1/1) ファイルの衝突をチェック                     [#####################] 100%
(1/1) 空き容量を確認                               [#####################] 100%
(1/1) インストール patch                           [#####################] 100%
patch の提案パッケージ
    ed: for patch -e functionality

32bit 版 gcc のインストール

mingw32_shell.bat でターミナルを起動し mingw-w64-i686-toolchain をインストールする。

$ pacman -S mingw-w64-i686-toolchain
:: 16 のパッケージがグループ mingw-w64-i686-toolchain にあります:
:: リポジトリ mingw32
   1) mingw-w64-i686-binutils  2) mingw-w64-i686-crt-git  3) mingw-w64-i686-gcc
   4) mingw-w64-i686-gcc-ada  5) mingw-w64-i686-gcc-fortran  6) mingw-w64-i686-gcc-libgfortran
   7) mingw-w64-i686-gcc-libs  8) mingw-w64-i686-gcc-objc  9) mingw-w64-i686-gdb
   10) mingw-w64-i686-headers-git  11) mingw-w64-i686-libmangle-git
   12) mingw-w64-i686-libwinpthread-git  13) mingw-w64-i686-make  14) mingw-w64-i686-tools-git
   15) mingw-w64-i686-winpthreads-git  16) mingw-w64-i686-winstorecompat-git

選択して下さい (デフォルト=all): 1 2 3 7 9 10 11 12 13 14 15 16
依存関係を解決しています...
衝突するパッケージがないか確認しています...

パッケージ (33) mingw-w64-i686-bzip2-1.0.6-3  mingw-w64-i686-cloog-0.18.1-3
                mingw-w64-i686-expat-2.1.0-5  mingw-w64-i686-gdbm-1.11-2
                mingw-w64-i686-gettext-0.19.4-2  mingw-w64-i686-gmp-6.0.0-2
                mingw-w64-i686-isl-0.13-1  mingw-w64-i686-libffi-3.2.1-2
                mingw-w64-i686-libiconv-1.14-4  mingw-w64-i686-libsystre-1.0.1-1
                mingw-w64-i686-libtre-git-r122.c2f5d13-3  mingw-w64-i686-mpc-1.0.3-1
                mingw-w64-i686-mpfr-3.1.2.p11-1  mingw-w64-i686-ncurses-5.9.20150321-1
                mingw-w64-i686-openssl-1.0.2.a-1  mingw-w64-i686-python2-2.7.10-1
                mingw-w64-i686-readline-6.2.005-3  mingw-w64-i686-tcl-8.6.4-1
                mingw-w64-i686-termcap-1.3.1-1  mingw-w64-i686-tk-8.6.4-1
                mingw-w64-i686-zlib-1.2.8-7  mingw-w64-i686-binutils-2.25-4
                mingw-w64-i686-crt-git-5.0.0.4501.4421b4a-1  mingw-w64-i686-gcc-4.9.2-5
                mingw-w64-i686-gcc-libs-4.9.2-5  mingw-w64-i686-gdb-7.9.1-1
                mingw-w64-i686-headers-git-5.0.0.4501.4421b4a-1
                mingw-w64-i686-libmangle-git-5.0.0.4497.4254261-1
                mingw-w64-i686-libwinpthread-git-5.0.0.4497.4254261-1
                mingw-w64-i686-make-4.0.2289.432cb65-1
                mingw-w64-i686-tools-git-5.0.0.4497.4254261-1
                mingw-w64-i686-winpthreads-git-5.0.0.4497.4254261-1
                mingw-w64-i686-winstorecompat-git-5.0.0.4497.4254261-1

合計ダウンロード容量:   68.00 MiB
合計インストール容量:  443.18 MiB

:: インストールを行いますか? [Y/n] y
:: パッケージを取得します ...
 mingw-w64-i686-libiconv-1.14-4-any       602.3 KiB  1870K/s 00:00 [#####################] 100%
 mingw-w64-i686-bzip2-1.0.6-3-any          64.9 KiB  9.06M/s 00:00 [#####################] 100%
 mingw-w64-i686-zlib-1.2.8-7-any          152.2 KiB  3.23M/s 00:00 [#####################] 100%
 mingw-w64-i686-binutils-2.25-4-any        10.2 MiB  2.19M/s 00:05 [#####################] 100%
 mingw-w64-i686-headers-git-5.0.0.45...     4.9 MiB  2.53M/s 00:02 [#####################] 100%
 mingw-w64-i686-crt-git-5.0.0.4501.4...  1675.5 KiB  3.10M/s 00:01 [#####################] 100%
 mingw-w64-i686-libwinpthread-git-5....    38.1 KiB  12.4M/s 00:00 [#####################] 100%
 mingw-w64-i686-winpthreads-git-5.0....    46.9 KiB  9.16M/s 00:00 [#####################] 100%
 mingw-w64-i686-gmp-6.0.0-2-any           430.8 KiB   192K/s 00:02 [#####################] 100%
 mingw-w64-i686-mpfr-3.1.2.p11-1-any      241.7 KiB   952K/s 00:00 [#####################] 100%
 mingw-w64-i686-mpc-1.0.3-1-any            62.5 KiB  8.72M/s 00:00 [#####################] 100%
 mingw-w64-i686-isl-0.13-1-any            446.6 KiB  96.8K/s 00:05 [#####################] 100%
 mingw-w64-i686-cloog-0.18.1-3-any         63.8 KiB  74.2K/s 00:01 [#####################] 100%
 mingw-w64-i686-gcc-libs-4.9.2-5-any      492.2 KiB  1469K/s 00:00 [#####################] 100%
 mingw-w64-i686-gcc-4.9.2-5-any            21.7 MiB  3.12M/s 00:07 [#####################] 100%
 mingw-w64-i686-expat-2.1.0-5-any         106.9 KiB  1527K/s 00:00 [#####################] 100%
 mingw-w64-i686-gettext-0.19.4-2-any        3.9 MiB  2.97M/s 00:01 [#####################] 100%
 mingw-w64-i686-gdbm-1.11-2-any           150.1 KiB  2.04M/s 00:00 [#####################] 100%
 mingw-w64-i686-libffi-3.2.1-2-any         33.7 KiB   544K/s 00:00 [#####################] 100%
 mingw-w64-i686-libtre-git-r122.c2f5...    69.2 KiB  1064K/s 00:00 [#####################] 100%
 mingw-w64-i686-libsystre-1.0.1-1-any       9.2 KiB   306K/s 00:00 [#####################] 100%
 mingw-w64-i686-ncurses-5.9.20150321...  1618.5 KiB  5.58M/s 00:00 [#####################] 100%
 mingw-w64-i686-openssl-1.0.2.a-1-any       2.7 MiB  3.09M/s 00:01 [#####################] 100%
 mingw-w64-i686-termcap-1.3.1-1-any        12.2 KiB  11.9M/s 00:00 [#####################] 100%
 mingw-w64-i686-readline-6.2.005-3-any    235.5 KiB  76.1K/s 00:03 [#####################] 100%
 mingw-w64-i686-tcl-8.6.4-1-any             2.8 MiB  4.20M/s 00:01 [#####################] 100%
 mingw-w64-i686-tk-8.6.4-1-any           1873.4 KiB  3.45M/s 00:01 [#####################] 100%
 mingw-w64-i686-python2-2.7.10-1-any       10.6 MiB  4.04M/s 00:03 [#####################] 100%
 mingw-w64-i686-gdb-7.9.1-1-any             2.7 MiB  5.08M/s 00:01 [#####################] 100%
 mingw-w64-i686-libmangle-git-5.0.0....    16.7 KiB   521K/s 00:00 [#####################] 100%
 mingw-w64-i686-make-4.0.2289.432cb6...   103.6 KiB  59.9K/s 00:02 [#####################] 100%
 mingw-w64-i686-tools-git-5.0.0.4497...   222.1 KiB   854K/s 00:00 [#####################] 100%
 mingw-w64-i686-winstorecompat-git-5...     5.2 KiB  0.00B/s 00:00 [#####################] 100%
(33/33) キーリングのキーを確認                                     [#####################] 100%
(33/33) パッケージの整合性をチェック                               [#####################] 100%
(33/33) パッケージファイルのロード                                 [#####################] 100%
(33/33) ファイルの衝突をチェック                                   [#####################] 100%
(33/33) 空き容量を確認                                             [#####################] 100%
( 1/33) インストール mingw-w64-i686-libiconv                       [#####################] 100%
( 2/33) インストール mingw-w64-i686-bzip2                          [#####################] 100%
( 3/33) インストール mingw-w64-i686-zlib                           [#####################] 100%
( 4/33) インストール mingw-w64-i686-binutils                       [#####################] 100%
( 5/33) インストール mingw-w64-i686-headers-git                    [#####################] 100%
( 6/33) インストール mingw-w64-i686-crt-git                        [#####################] 100%
( 7/33) インストール mingw-w64-i686-libwinpthread-git              [#####################] 100%
( 8/33) インストール mingw-w64-i686-winpthreads-git                [#####################] 100%
( 9/33) インストール mingw-w64-i686-gmp                            [#####################] 100%
(10/33) インストール mingw-w64-i686-mpfr                           [#####################] 100%
(11/33) インストール mingw-w64-i686-mpc                            [#####################] 100%
(12/33) インストール mingw-w64-i686-isl                            [#####################] 100%
(13/33) インストール mingw-w64-i686-cloog                          [#####################] 100%
(14/33) インストール mingw-w64-i686-gcc-libs                       [#####################] 100%
(15/33) インストール mingw-w64-i686-gcc                            [#####################] 100%
(16/33) インストール mingw-w64-i686-expat                          [#####################] 100%
(17/33) インストール mingw-w64-i686-gettext                        [#####################] 100%
(18/33) インストール mingw-w64-i686-gdbm                           [#####################] 100%
(19/33) インストール mingw-w64-i686-libffi                         [#####################] 100%
(20/33) インストール mingw-w64-i686-libtre-git                     [#####################] 100%
(21/33) インストール mingw-w64-i686-libsystre                      [#####################] 100%
(22/33) インストール mingw-w64-i686-ncurses                        [#####################] 100%
(23/33) インストール mingw-w64-i686-openssl                        [#####################] 100%
(24/33) インストール mingw-w64-i686-termcap                        [#####################] 100%
(25/33) インストール mingw-w64-i686-readline                       [#####################] 100%
(26/33) インストール mingw-w64-i686-tcl                            [#####################] 100%
(27/33) インストール mingw-w64-i686-tk                             [#####################] 100%
(28/33) インストール mingw-w64-i686-python2                        [#####################] 100%
(29/33) インストール mingw-w64-i686-gdb                            [#####################] 100%
(30/33) インストール mingw-w64-i686-libmangle-git                  [#####################] 100%
(31/33) インストール mingw-w64-i686-make                           [#####################] 100%
(32/33) インストール mingw-w64-i686-tools-git                      [#####################] 100%
(33/33) インストール mingw-w64-i686-winstorecompat-git             [#####################] 100%

ありゃ。 python とかも入っちゃったねぇ。

$ gcc -v
Using built-in specs.
COLLECT_GCC=C:\msys64\mingw32\bin\gcc.exe
COLLECT_LTO_WRAPPER=C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/lto-wrapper.exe
Target: i686-w64-mingw32
Configured with: ../gcc-4.9.2/configure --prefix=/mingw32 --with-local-prefix=/mingw32/local --build=i686-w64-mingw32 --host=i686-w64-mingw32 --target=i686-w64-mingw32 --with-native-system-header-dir=/mingw32/i686-w64-mingw32/include --libexecdir=/mingw32/lib --with-gxx-include-dir=/mingw32/include/c++/4.9.2 --enable-bootstrap --with-arch=i686 --with-tune=generic --enable-languages=c,lto,c++,objc,obj-c++,fortran,ada --enable-shared --enable-static --enable-libatomic --enable-threads=posix --enable-graphite --enable-fully-dynamic-string --enable-libstdcxx-time=yes --disable-libstdcxx-pch --disable-libstdcxx-debug --enable-cloog-backend=isl --enable-version-specific-runtime-libs --disable-cloog-version-check --disable-isl-version-check --enable-lto --enable-libgomp --disable-multilib --enable-checking=release --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-libiconv --with-system-zlib --with-gmp=/mingw32 --with-mpfr=/mingw32 --with-mpc=/mingw32 --with-isl=/mingw32 --with-cloog=/mingw32 --with-pkgversion='Rev5, Built by MSYS2 project' --with-bugurl=http://sourceforge.net/projects/msys2 --with-gnu-as --with-gnu-ld --disable-sjlj-exceptions --with-dwarf2
Thread model: posix
gcc version 4.9.2 (Rev5, Built by MSYS2 project)

64bit 版 gcc のインストール

mingw64_shell.bat でターミナルを起動し mingw-w64-x86_64-toolchain をインストールする。

$ pacman -S mingw-w64-x86_64-toolchain
:: 16 のパッケージがグループ mingw-w64-x86_64-toolchain にあります:
:: リポジトリ mingw64
   1) mingw-w64-x86_64-binutils  2) mingw-w64-x86_64-crt-git  3) mingw-w64-x86_64-gcc
   4) mingw-w64-x86_64-gcc-ada  5) mingw-w64-x86_64-gcc-fortran
   6) mingw-w64-x86_64-gcc-libgfortran  7) mingw-w64-x86_64-gcc-libs
   8) mingw-w64-x86_64-gcc-objc  9) mingw-w64-x86_64-gdb  10) mingw-w64-x86_64-headers-git
   11) mingw-w64-x86_64-libmangle-git  12) mingw-w64-x86_64-libwinpthread-git
   13) mingw-w64-x86_64-make  14) mingw-w64-x86_64-tools-git
   15) mingw-w64-x86_64-winpthreads-git  16) mingw-w64-x86_64-winstorecompat-git

選択して下さい (デフォルト=all): 1 2 3 7 9 10 11 12 13 14 15 16
依存関係を解決しています...
衝突するパッケージがないか確認しています...

パッケージ (33) mingw-w64-x86_64-bzip2-1.0.6-3  mingw-w64-x86_64-cloog-0.18.1-3
                mingw-w64-x86_64-expat-2.1.0-5  mingw-w64-x86_64-gdbm-1.11-2
                mingw-w64-x86_64-gettext-0.19.4-2  mingw-w64-x86_64-gmp-6.0.0-2
                mingw-w64-x86_64-isl-0.13-1  mingw-w64-x86_64-libffi-3.2.1-2
                mingw-w64-x86_64-libiconv-1.14-4  mingw-w64-x86_64-libsystre-1.0.1-1
                mingw-w64-x86_64-libtre-git-r122.c2f5d13-3  mingw-w64-x86_64-mpc-1.0.3-1
                mingw-w64-x86_64-mpfr-3.1.2.p11-1  mingw-w64-x86_64-ncurses-5.9.20150321-1
                mingw-w64-x86_64-openssl-1.0.2.a-1  mingw-w64-x86_64-python2-2.7.10-1
                mingw-w64-x86_64-readline-6.2.005-3  mingw-w64-x86_64-tcl-8.6.4-1
                mingw-w64-x86_64-termcap-1.3.1-1  mingw-w64-x86_64-tk-8.6.4-1
                mingw-w64-x86_64-zlib-1.2.8-7  mingw-w64-x86_64-binutils-2.25-4
                mingw-w64-x86_64-crt-git-5.0.0.4501.4421b4a-1
                mingw-w64-x86_64-gcc-4.9.2-5  mingw-w64-x86_64-gcc-libs-4.9.2-5
                mingw-w64-x86_64-gdb-7.9.1-1
                mingw-w64-x86_64-headers-git-5.0.0.4501.4421b4a-1
                mingw-w64-x86_64-libmangle-git-5.0.0.4497.4254261-1
                mingw-w64-x86_64-libwinpthread-git-5.0.0.4497.4254261-1
                mingw-w64-x86_64-make-4.0.2289.432cb65-1
                mingw-w64-x86_64-tools-git-5.0.0.4497.4254261-1
                mingw-w64-x86_64-winpthreads-git-5.0.0.4497.4254261-1
                mingw-w64-x86_64-winstorecompat-git-5.0.0.4497.4254261-1

合計ダウンロード容量:   71.58 MiB
合計インストール容量:  476.52 MiB

:: インストールを行いますか? [Y/n] y
:: パッケージを取得します ...
 mingw-w64-x86_64-libico...   598.0 KiB  1886K/s 00:00 [############################] 100%
 mingw-w64-x86_64-bzip2-...    66.9 KiB  9.33M/s 00:00 [############################] 100%
 mingw-w64-x86_64-zlib-1...   147.8 KiB   213K/s 00:01 [############################] 100%
 mingw-w64-x86_64-binuti...    11.7 MiB  2.03M/s 00:06 [############################] 100%
 mingw-w64-x86_64-header...     4.9 MiB  2.68M/s 00:02 [############################] 100%
 mingw-w64-x86_64-crt-gi...     2.6 MiB  3.50M/s 00:01 [############################] 100%
 mingw-w64-x86_64-libwin...    34.5 KiB  11.2M/s 00:00 [############################] 100%
 mingw-w64-x86_64-winpth...    44.7 KiB  10.9M/s 00:00 [############################] 100%
 mingw-w64-x86_64-gmp-6....   448.7 KiB  51.0K/s 00:09 [############################] 100%
 mingw-w64-x86_64-mpfr-3...   250.2 KiB   989K/s 00:00 [############################] 100%
 mingw-w64-x86_64-mpc-1....    62.3 KiB  8.70M/s 00:00 [############################] 100%
 mingw-w64-x86_64-isl-0....   434.3 KiB  55.6K/s 00:08 [############################] 100%
 mingw-w64-x86_64-cloog-...    63.3 KiB  73.0K/s 00:01 [############################] 100%
 mingw-w64-x86_64-gcc-li...   437.3 KiB  1477K/s 00:00 [############################] 100%
 mingw-w64-x86_64-gcc-4....    22.3 MiB  4.65M/s 00:05 [############################] 100%
 mingw-w64-x86_64-expat-...   105.6 KiB  1531K/s 00:00 [############################] 100%
 mingw-w64-x86_64-gettex...     3.8 MiB  3.34M/s 00:01 [############################] 100%
 mingw-w64-x86_64-gdbm-1...   151.9 KiB  2.12M/s 00:00 [############################] 100%
 mingw-w64-x86_64-libffi...    31.8 KiB   514K/s 00:00 [############################] 100%
 mingw-w64-x86_64-libtre...    69.0 KiB  1078K/s 00:00 [############################] 100%
 mingw-w64-x86_64-libsys...     9.1 KiB   295K/s 00:00 [############################] 100%
 mingw-w64-x86_64-ncurse...  1646.1 KiB  3.88M/s 00:00 [############################] 100%
 mingw-w64-x86_64-openss...     3.3 MiB  4.33M/s 00:01 [############################] 100%
 mingw-w64-x86_64-termca...    12.4 KiB  4.03M/s 00:00 [############################] 100%
 mingw-w64-x86_64-readli...   235.9 KiB  78.6K/s 00:03 [############################] 100%
 mingw-w64-x86_64-tcl-8....     2.8 MiB  4.20M/s 00:01 [############################] 100%
 mingw-w64-x86_64-tk-8.6...  1870.5 KiB  3.47M/s 00:01 [############################] 100%
 mingw-w64-x86_64-python...    10.5 MiB  4.23M/s 00:02 [############################] 100%
 mingw-w64-x86_64-gdb-7....     2.7 MiB  5.07M/s 00:01 [############################] 100%
 mingw-w64-x86_64-libman...    16.6 KiB   517K/s 00:00 [############################] 100%
 mingw-w64-x86_64-make-4...   101.9 KiB  58.8K/s 00:02 [############################] 100%
 mingw-w64-x86_64-tools-...   232.3 KiB  1001K/s 00:00 [############################] 100%
 mingw-w64-x86_64-winsto...     4.9 KiB  0.00B/s 00:00 [############################] 100%
(33/33) キーリングのキーを確認                         [############################] 100%
(33/33) パッケージの整合性をチェック                   [############################] 100%
(33/33) パッケージファイルのロード                     [############################] 100%
(33/33) ファイルの衝突をチェック                       [############################] 100%
(33/33) 空き容量を確認                                 [############################] 100%
( 1/33) インストール mingw-w64-x86_64-libiconv         [############################] 100%
( 2/33) インストール mingw-w64-x86_64-bzip2            [############################] 100%
( 3/33) インストール mingw-w64-x86_64-zlib             [############################] 100%
( 4/33) インストール mingw-w64-x86_64-binutils         [############################] 100%
( 5/33) インストール mingw-w64-x86_64-headers-git      [############################] 100%
( 6/33) インストール mingw-w64-x86_64-crt-git          [############################] 100%
( 7/33) インストール mingw-w64-x86_64-libwinpthrea...  [############################] 100%
( 8/33) インストール mingw-w64-x86_64-winpthreads-git  [############################] 100%
( 9/33) インストール mingw-w64-x86_64-gmp              [############################] 100%
(10/33) インストール mingw-w64-x86_64-mpfr             [############################] 100%
(11/33) インストール mingw-w64-x86_64-mpc              [############################] 100%
(12/33) インストール mingw-w64-x86_64-isl              [############################] 100%
(13/33) インストール mingw-w64-x86_64-cloog            [############################] 100%
(14/33) インストール mingw-w64-x86_64-gcc-libs         [############################] 100%
(15/33) インストール mingw-w64-x86_64-gcc              [############################] 100%
(16/33) インストール mingw-w64-x86_64-expat            [############################] 100%
(17/33) インストール mingw-w64-x86_64-gettext          [############################] 100%
(18/33) インストール mingw-w64-x86_64-gdbm             [############################] 100%
(19/33) インストール mingw-w64-x86_64-libffi           [############################] 100%
(20/33) インストール mingw-w64-x86_64-libtre-git       [############################] 100%
(21/33) インストール mingw-w64-x86_64-libsystre        [############################] 100%
(22/33) インストール mingw-w64-x86_64-ncurses          [############################] 100%
(23/33) インストール mingw-w64-x86_64-openssl          [############################] 100%
(24/33) インストール mingw-w64-x86_64-termcap          [############################] 100%
(25/33) インストール mingw-w64-x86_64-readline         [############################] 100%
(26/33) インストール mingw-w64-x86_64-tcl              [############################] 100%
(27/33) インストール mingw-w64-x86_64-tk               [############################] 100%
(28/33) インストール mingw-w64-x86_64-python2          [############################] 100%
(29/33) インストール mingw-w64-x86_64-gdb              [############################] 100%
(30/33) インストール mingw-w64-x86_64-libmangle-git    [############################] 100%
(31/33) インストール mingw-w64-x86_64-make             [############################] 100%
(32/33) インストール mingw-w64-x86_64-tools-git        [############################] 100%
(33/33) インストール mingw-w64-x86_64-winstorecomp...  [############################] 100%
$ gcc -v
Using built-in specs.
COLLECT_GCC=C:\msys64\mingw64\bin\gcc.exe
COLLECT_LTO_WRAPPER=C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/lto-wrapper.exe
Target: x86_64-w64-mingw32
Configured with: ../gcc-4.9.2/configure --prefix=/mingw64 --with-local-prefix=/mingw64/local --build=x86_64-w64-mingw32 --host=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --with-native-system-header-dir=/mingw64/x86_64-w64-mingw32/include --libexecdir=/mingw64/lib --with-gxx-include-dir=/mingw64/include/c++/4.9.2 --enable-bootstrap --with-arch=x86-64 --with-tune=generic --enable-languages=c,lto,c++,objc,obj-c++,fortran,ada --enable-shared --enable-static --enable-libatomic --enable-threads=posix --enable-graphite --enable-fully-dynamic-string --enable-libstdcxx-time=yes --disable-libstdcxx-pch --disable-libstdcxx-debug --enable-cloog-backend=isl --enable-version-specific-runtime-libs --disable-cloog-version-check --disable-isl-version-check --enable-lto --enable-libgomp --disable-multilib --enable-checking=release --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-libiconv --with-system-zlib --with-gmp=/mingw64 --with-mpfr=/mingw64 --with-mpc=/mingw64 --with-isl=/mingw64 --with-cloog=/mingw64 --with-pkgversion='Rev5, Built by MSYS2 project' --with-bugurl=http://sourceforge.net/projects/msys2 --with-gnu-as --with-gnu-ld
Thread model: posix
gcc version 4.9.2 (Rev5, Built by MSYS2 project)

とういうわけで,後半へ続く。

【おまけ】 Proxy サーバ越しのアクセス

Proxy サーバ越しに curl を使う場合は ~/.curlrc に以下の記述を追加する。

.curlrc
proxy-user = "username:password"
proxy = "http://proxy.example.com:8080"

pacman を Proxy サーバ越しに使う場合は、上述の通りに curl の設定をしたうえで /etc/pacman.conf ファイルの以下の記述を探し、コメントを解除する。

pacman.conf
#XferCommand = /usr/bin/curl -C - -f %u > %o

gnupg で鍵サーバにアクセスする場合も、 Proxy サーバ越しにアクセスするのであれば、 ~/.gnupg/gpg.conf に以下のオプションを追記する。

gpg.conf
keyserver-options http-proxy=http://username:password@proxy.example.com:8080/

実は /etc/pacman.d/gnupg ディレクトリにも gpg.conf ファイルがあって pacman-key コマンドはこちらを見てるっぽい。 /etc/pacman.d/gnupg ディレクトリにある鍵束を gnupg から直接見る場合には以下のコマンドを叩く。

$ gpg --homedir /etc/pacman.d/gnupg --list-keys

ブックマーク

spiegel-im-spiegel
職業エンジニアは無期休業中。
https://baldanders.info/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした