GCC
msys2

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

More than 1 year has 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


ブックマーク