この記事では、MinGW-w64 の32/64ビット両方のコンパイラを、32ビット版の MSYS (1.0) から使える様に単体インストールする手法を紹介します。MSYS2 がバンドルされません。また、GCC の各種バージョンを GUI 上から簡単にインストール可能です。
目次:
- MinGW-w64とは:
- 単体インストーラのダウンロード:
- MinGW-w64 の64ビット版コンパイラをインストール:
- MSYS (1.0) の Mintty ターミナルから起動出来る事の確認:
- MSYS (1.0) の bash コマンド ターミナルからの使い勝手の向上:
MinGW-w64とは:
MinGW-w64 は、Windows用アプリケーションが作成可能な GCC (GNU Compiler Collection) ですが、32ビット用バイナリの生成に加え、64ビット用バイナリも生成可能なツールセットです。
高級言語としては、C (gcc)、C++ (g++)、FORTRAN (gfortran) が利用可能となります。尚、g++.exe の他に c++.exe という名称が付いたファイルもインストールされますが、同じ物です。
【以前の記事】にてインストールが完了している32ビット版の Mingw/MSYS (1.0) 環境に、64ビット版のコンパイラー「も」使える様に MinGW-w64 を追加インストールします。
尚、この64ビットバイナリを生成可能なコンパイラ自体は、mingw32 への移植なので、32ビット版の Windows でも動作する筈です。
単体インストーラのダウンロード:
まずは次の公式サイトから、MinGW-w64 の単体版 ( MSYS2 のバンドルされていない版) をダウンロードします。サイトの Downloads から MinGW-w64-builds を選んで、mingw-w64-install.exe をダウンロードします。この exe ファイルは、コンパイラ単体専用のインストーラーです。
MinGW-w64 の64ビット版コンパイラをインストール:
インストーラーを起動して Next を押すと、次の様な画面になり、選択肢が出てきます。複数のバージョンをインストールしたい場合、以下の作業を繰り返します。
各選択肢の意味は次の通りです。
- Version: コンパイラー (gcc) のバージョンです。
取り敢えず以下の説明では、6.4.0 を選んだ事になっています。 - Architecture: 生成されるバイナリが、i686 は32ビット、x86_64 は64ビットです。
今回は64ビット版をインストールしたいので x86_64 を選びます。 - Threads: スレッド モデルの API を POSIX 準拠か、Windows 32か選びます。
POSIX スレッドを選ぶとマルチスレッドなプログラムが作成可能となり、bin の下の WinPthreads 専用の libwinpthread-1.dll を使用します。 - Exception: コンパイルしたバイナリに付加する例外ハンドラの形式です。
i686 では dwarf か sjlj を、x86_64 では seh か sjlj を選べます。
- DWARF: デバッガー等でも使用される、内部で小人さん V4 が働く形式です。
DWARF は バイナリの「ELF 形式」に引っ掛けた「小人」のダジャレです。 - SEH: Structured Exception Handling の略で、構造化例外処理です。
- SJLJ: Set Jump & Long Jump の昔ながらの C 言語の例外処理形式です。
処理速度は遅くなります。
- DWARF: デバッガー等でも使用される、内部で小人さん V4 が働く形式です。
- Build revision: Mingw-w64 専用に GCC のソースが修正された場合に上がります。
次の画面でインストール先のフォルダを聞かれます。今回は C:\MinGW64 にします。チェックボックスとして問われるスタートメニューのショートカット登録は、DOS 窓が起動されるだけなので、無くても困らないと思います。
最後まで正しく終了すると、C:\MinGW64 に上の選択肢毎にフォルダが分かれてインストールされています。
MSYS (1.0) の Mintty ターミナルから起動出来る事の確認:
【前回の記事】で作成したタスクバー上の M アイコンをクリックして MinGW32/MSYS のMintty ターミナル ウィンドゥを開きます。下記の通り順番にコマンドを打ってバージョン番号が出れば正しく動作しています。
- cd /c/MinGW64 ⇒ C: ドライブの MinGW64 に移動します。
- ls ⇒ 上記で選んだ選択肢毎にディレクトリが出来ている事を確認します。
- cd x86_64-6.4.0-posix-seh-rt_v5-rev0 ⇒ 選択肢のディレクトリに下ります。
- cd mingw64/bin ⇒ あと2つディレクトリを下ります。
- x86_64-w64-mingw32-gcc --version (ハイフンは2つ) ⇒ 表示を確認します。
- x86_64-w64-mingw32-c++ --version (ハイフンは2つ) ⇒ 表示を確認します。
- x86_64-w64-mingw32-g++ --version (ハイフンは2つ) ⇒ 表示を確認します。
- x86_64-w64-mingw32-gfortran --version (ハイフンは2つ) ⇒ 表示を確認します。
MSYS (1.0) の bash コマンド ターミナルからの使い勝手の向上:
あと2手間掛けて、ターミナルの bash コマンドラインからの使い勝手を向上しておきます。
マウントポイントの追加:
上記インストール直後の状態では、MinGW-w64 は/c/MinGW64/x86_64-6.4.0-posix-seh-rt_v5-rev0/mingw64 からのアクセスになりますので、MSYS の ルートディレクトリ / に /mingw64 としてマウントします。
C:\MSYS にインストールしてある MSYS の、/etc ディレクトリ (ウィンドゥズの C:\MSYS\etc) に行き、fstab というファイルの最後に次の3行を追加します。32ビット用の3行をコピー & ペーストして書き換えれば良いです。
# Win64_Path Mount_Point #--------------------------------------------------- ----------- C:/mingw64/x86_64-6.4.0-posix-seh-rt_v5-rev0/mingw64 /mingw64
- 実際のファイルでは、タブ キャラクターが入ってインデントされています。
- 「mount」コマンドを打って、正しくマウント出来たか確認します。また、「ls /mingw64/bin」と打って、目的の GCC キットが正しくマウントされたか確認します。
パスの追加:
MSYS の PATH 設定に「/mingw64/bin」を追加します。
まずは、システム全体のデフォルト値のパスを確認する為に、/etc/profile (C:\MSYS\etc\profile) の中身を確認します。また、bash のコマンドラインで「env | egrep '^PATH=’」と打つと PATH 環境変数の値が確認出来ます。Windows の PATH 環境変数を引き継いで居ます。
個人で色々と設定している方は、お好みに合わせてどうぞ。以下の記述は、まだ何もしていない方向けです。
ホームディレクトリで「ls -a」とコマンドを打って、「.profile」(先頭にドットが付きます) という名前のファイルが有るか確認します。無ければ新しく作ります。
64ビット版のパスを優先する場合、次の1行を書いておきます。
export PATH=".:/usr/local/bin:/mingw64/bin:/mingw/bin:/bin"
- 「source .profile」コマンドを打って、上記のファイルを読み込みます。
- 「env | egrep '^PATH=’」と打って、パスの設定を確認します。
- 「which gcc」と打って、どのディレクトリの gcc が使われるか確認します。
- 「gfortran --version」(ハイフンは2つ) と打って正しいバージョンが表示されるか確認します。