MSYS2 MinGW GCC環境をつくる(その1)

とある事情で GTK+ 3.0 ウィンドウ アプリケーションを作成して Linux で動かすことになりました。普段は Windows を使っているので Linux で開発作業を進めていくのが億劫です。ゲスト OS として Linux をインストールしてその中で作業をすることになってしまいますので

できることなら開発作業は Windows で進めていきたい! ということで Windows MSYS2 + MinGW GCC 環境を構築して GTK+ 3.0 アプリケーション開発ができる環境を作っていきます。最終的にはアプリケーションのソースコードをそのまま Linux 環境でビルドします。

MSYS2 をダウンロードする

MinGW の公式ウェブサイトは http://www.mingw.org/ですが こちらはどうも更新が滞っているようです。今は MSYS2 のサイトから MinGW をインストールしたほうが良いようです。http://www.mingw.org/からダウンロードできる MSYS1 には GTK+ 2.4 パッケージは含まれていますが GTK+3.0 パッケージが含まれていませんでした

32 ビット Windows にインストールする場合は左側の msys2-i686-*.exe をダウンロードします。64 ビット Windows にインストールする場合は右側の msys2-x86_64-*.exe をダウンロードします。

2018 1 30 日時点でのファイル名は msys2-i686-20161025.exe msys2-x86_64-20161025.exe でしたので 以下 64 ビット版の msys2-x86_64-20161025.exe のインストールを例として説明していきます。

MSYS2 をインストールする

ダウンロードした msys2-x86_64-20161025.exe をダブルクリックするとインストーラーが起動します。

次へ をクリックします。

インストールするディレクトリを指定します。特に事情がなければ デフォルトの C:¥msys64 のままで良いと思います。次へ をクリックします。

スタートメニューに追加するショートカットの指定です。そのまま 次へ をクリックします。

インストールが始まります。少し時間がかかるのでしばらく待ちましょう。

インストールが完了すると 完了 ボタンが表示されます。完了 をクリックします。

インストールが完了すると Windows のスタートメニューに 3 つのショートカットが追加されます。

  • MSYS2 MinGW 64-bit
  • MSYS2 MinGW 32-bit
  • MSYS2 MSYS

MinGW 64-bit MinGW 32-bit MSYS どれを選択しても UNIX ライクなシェルが起動します。それぞれの環境は独立しており この後インストールしていくパッケージは環境ごとに分かれています。

パッケージを更新する

インストーラーの最後の画面で MSYS2 64bit を実行中。 のチェックを入れたままにしていた場合は MSYS2 MSYS が起動します。

シェルを終了してしまった場合は スタートメニューから MSYS2 MinGW 64-bit MSYS2 MinGW 32-bit MSYS2 MSYS のいずれかを起動するか もしくは インストールディレクトリ C:¥msys64 の下にある mingw64.exe mingw32.exe msys2.exe のいずれかを起動してください。どの方法でシェルを起動してもパッケージのインストール作業手順は同じです。

MSYS2 には Arch Linux 由来のパッケージマネージャー pacman が標準で含まれており パッケージマネージャー pacman を使って 様々なパッケージを追加していくことができます。

はじめに以下のコマンドを実行してパッケージデータベースを最新にします。この処理は実際にパッケージを更新するわけではなくパッケージの一覧を新しくするだけなので あまり時間がかからずに終了します。

パッケージデータベースを更新するコマンド
$ pacman -Sy

パッケージデータベースの更新が終了したら 続いて以下のコマンドを実行してパッケージをアップグレードします。

パッケージをアップグレードするコマンド
$ pacman -Su

インストールを行いますか? と確認メッセージが出るので そのまま Enter キーを押すか Y または y を入力してから Enter キーを押します。

インターネット通信環境にもよりますが パッケージのアップグレード処理には少し時間がかかります。そして 以下のメッセージが出て処理が止まることがあります。

terminate MSYS2 without returning to shell and check for updates again for example close your terminal window instead of calling exit

シェルに戻らずに MSYS2 を終了し もう一度 更新をチェックしてください。たとえば exit コマンドを呼ぶ代わりにターミナル ウィンドウを閉じてください といった意味ですね。

この状態ではもうキー入力を受け付けないので exit コマンドを入力することもできません。指示通り ウィンドウ右上の×ボタンを押します。すぐに反応しない場合は 何度か×ボタンを押して 10 秒程度待ってみてください。

このようなダイアログが表示されたら OK をクリックして終了します。

もう一度 スタートメニューから MSYS2 MinGW 64-bit MSYS2 MinGW 32-bit MSYS2 MSYS のいずれかを起動して パッケージのアップグレードをします。

パッケージをアップグレードするコマンド
$ pacman -Su

先程と同じ確認メッセージが出るので そのまま Enter キーを押すか Y または y を入力してから Enter キーを押します。

今度は無事にシェル プロンプトに復帰しました。プロンプトに復帰したら 何も行うことがありません と表示されてパッケージ更新の必要がなくなるまで pacman -Su を繰り返し実行してください。

GCC パッケージをインストールする

パッケージを更新したら ようやく GCC コンパイラのインストールです。pacman -Ssq オプションを付けて gcc を含むパッケージを検索してみます。

gccを含むパッケージを検索するコマンド
$ pacman -Ssq gcc

$ pacman -Ssq gcc
mingw-w64-i686-gcc
mingw-w64-i686-gcc-ada
mingw-w64-i686-gcc-fortran
mingw-w64-i686-gcc-libgfortran
mingw-w64-i686-gcc-libs
mingw-w64-i686-gcc-objc
mingw-w64-i686-lcov
mingw-w64-x86_64-gcc
mingw-w64-x86_64-gcc-ada
mingw-w64-x86_64-gcc-fortran
mingw-w64-x86_64-gcc-libgfortran
mingw-w64-x86_64-gcc-libs
mingw-w64-x86_64-gcc-objc
mingw-w64-x86_64-lcov
gcc
gcc-fortran
gcc-libs
mingw-w64-cross-gcc

たくさんのパッケージが見つかりました。gcc-fortran gcc-obj などが末尾に付くものは C/C++ではなく別の言語のパッケージなので無視できますが gcc 本体だけでも以下の 3 種類のパッケージがあります。

  • mingw-w64-i686-gcc MinGW gcc コンパイラ 32 ビット版
  • mingw-w64-x86_64-gcc MinGW gcc コンパイラ 64 ビット版
  • gcc MSYS gcc コンパイラ

パッケージ名に何も付いていない gcc MSYS のパッケージで MSYS のシェル内で使うことを想定しているパッケージです。頭に mingw-w64-i686- と付いているのは MinGW 32-bit のパッケージです。32 ビットパッケージなのに w64 と付いていて紛らわしいですね mingw-w64-x86_64- と付いているものが MinGW 64-bit のパッケージです。MinGW 32-bit パッケージや MinGW 64-bit パッケージは MinGW シェルの中だけでなく Windows のコマンドプロンプト cmd.exe などからも使うことができます。

最終的には Eclipse CDT から gcc を呼び出して C/C++アプリケーションをビルドするのが目的なので MSYS2 シェルからしか使えない gcc パッケージではなく 外部からも呼び出せる mingw-w64-x86_64-gcc パッケージをインストールします。

パッケージのインストールには pacman -S オプションを使用します。

mingw-w64-x86_64-gccパッケージをインストールするコマンド
$ pacman -S mingw-w64-x86_64-gcc

mingw-w64-x86_64-gcc パッケージと一緒に mingw-w64-x86_64-binutils-2 などの依存パッケージも自動的にインストールしてくれるようになっています。

インストールを行いますか? と確認メッセージが出るので そのまま Enter キーを押すか Y または y を入力してから Enter キーを押します。

gcc コマンドの確認

mingw-w64-x86_64-gcc パッケージのインストールが完了したら gcc コマンドが使えるか確認しておきます。

プロンプトで以下のコマンドを実行してみてください。

gccのバージョンを表示するコマンド
$ gcc --version

コマンドを実行したシェルが MSYS だった場合 残念ながら gcc コマンドが見つからないというメッセージが表示されます。

これは MSYS MinGW 64-bit MinGW 32-bit それぞれで環境が分離されており それぞれのパッケージコマンドがお互いに見えないようになっているからです。

MSYS シェルの代わりに MinGW 64-bit シェルを起動して gcc --version を実行してください。

MinGW 64-bit シェルであれば mingw-w64-x86_64- で始まるパッケージのコマンドが使えるようになっています。

Windows のコマンドプロンプト cmd.exe でも PATH 環境変数に C:¥msys64¥mingw64¥bin を追加すれば gcc コマンドを使うことができます。

これで MinGW gcc のインストールは完了です。

make パッケージをインストールする

Makefile を処理するのに必要になる make コマンドもインストールしておきます。

make パッケージも 3 つあります。

  • mingw-w64-i686-make MinGW make コマンド 32 ビット版
  • mingw-w64-x86_64-make MinGW make コマンド 64 ビット版
  • make MSYS make コマンド

gcc mingw-w64-x86_64- で始まるパッケージをインストールしましたが make コマンドは mingw-w64- の付かない MSYS make パッケージをインストールします。

mingw-w64-*-make の場合はコマンドの名前が make.exe ではなく mingw32-make.exe となっており 自分で make.exe にリネームするなどの手間がかかります。

makeパッケージをインストールするコマンド
$ pacman -S make

これで make のインストールも完了です。

次回は Eclipse CDT をインストールしていきます。

この記事を共有しませんか?