MinGW-w64 を導入する

no extension

MinGW-w64MinGW (Minimalist GNU for Windows) の後継とも言えるプロジェクトで Windows 用のバイナリを出力可能な GCC を含む開発環境を提供している。 MSYS2MinGW-w64 の成果を取り込んでいるので馴染みのある人もいるだろう。

MinGW および MinGW-w64 はどちらかと言うと Linux 系のプラットフォームで Windows 向けのビルドを行うクロスコンパイラとしての側面が強いが,もちろん Windows 用のバイナリも存在する。 MinGW-w64 の Windows 用インストーラは以下で取得できる1

インストーラを起動すると以下のウィザード画面になる。

Installing Mingw-w64 (1)
Installing Mingw-w64 (1)

このまま [Next >]

Installing Mingw-w64 (2)
Installing Mingw-w64 (2)

この画面でインストールする GCC の種別を指定する。

  • Version : GCC のバージョン。特に理由がない限り最新版でいいだろう(2018-03-31 時点の最新は 7.3.0)
  • Architecture : ターゲットシステムのアーキテクチャ。 i686x86_64 のいずれかを選択する。 x86_64 が64ビット版なのでご注意を
  • Thread : スレッドモデル。 posixwin32 のいずれかを選択する。 win32 は Windows ネイティブ関数を使っていて速いのだが C++ 11 以降の thread, mutex, future が使えなくなる。特に理由がないのであれば posix でいいだろう
  • Exeption : 例外処理ハンドリング。アーキテクチャによって以下を選択できる。
    • i686
      • dwarf : DWARF
      • sjlj : SetJump/LongJump
    • x86_64
      • seh : Structured Exception Handling (Windows ネイティブ。おすすめ)
      • sjlj : SetJump/LongJump
  • Build Version : ビルドバージョン。特に理由がなければ最新版でいいだろう

種別を指定したら [Next >]

Installing Mingw-w64 (3)
Installing Mingw-w64 (3)

インストール先のフォルダを指定する。 既定のままではめっさ長い名前になるので変更したほうがいいかも?

[Next >] でインストールを開始する。

Installing Mingw-w64 (4)
Installing Mingw-w64 (4)

どうもネットから指定した種別に対応する圧縮ファイルをダウンロードしてバイナリを展開しているようだ。 完了したら [Next >]

Installing Mingw-w64 (5)
Installing Mingw-w64 (5)

これで完了。 お疲れ様でした。

試しに gcc を起動してみる。 こんな感じ。

$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc.exe
COLLECT_LTO_WRAPPER=C:/Program\ Files/mingw-w64/x86_64-7.3.0-posix-seh-rt_v5-rev0/mingw64/bin/../libexec/gcc/x86_64-w64-mingw32/7.3.0/lto-wrapper.exe
Target: x86_64-w64-mingw32
Configured with: ../../../src/gcc-7.3.0/configure --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --prefix=/mingw64 --with-sysroot=/c/mingw730/x86_64-730-posix-seh-rt_v5-rev0/mingw64 --enable-shared --enable-static --disable-multilib --enable-languages=c,c++,fortran,lto --enable-libstdcxx-time=yes --enable-threads=posix --enable-libgomp --enable-libatomic --enable-lto --enable-graphite --enable-checking=release --enable-fully-dynamic-string --enable-version-specific-runtime-libs --enable-libstdcxx-filesystem-ts=yes --disable-libstdcxx-pch --disable-libstdcxx-debug --enable-bootstrap --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-gnu-as --with-gnu-ld --with-arch=nocona --with-tune=core2 --with-libiconv --with-system-zlib --with-gmp=/c/mingw730/prerequisites/x86_64-w64-mingw32-static --with-mpfr=/c/mingw730/prerequisites/x86_64-w64-mingw32-static --with-mpc=/c/mingw730/prerequisites/x86_64-w64-mingw32-static --with-isl=/c/mingw730/prerequisites/x86_64-w64-mingw32-static --with-pkgversion='x86_64-posix-seh-rev0, Built by MinGW-W64 project' --with-bugurl=https://sourceforge.net/projects/mingw-w64 CFLAGS='-O2 -pipe -fno-ident -I/c/mingw730/x86_64-730-posix-seh-rt_v5-rev0/mingw64/opt/include -I/c/mingw730/prerequisites/x86_64-zlib-static/include -I/c/mingw730/prerequisites/x86_64-w64-mingw32-static/include' CXXFLAGS='-O2 -pipe -fno-ident -I/c/mingw730/x86_64-730-posix-seh-rt_v5-rev0/mingw64/opt/include -I/c/mingw730/prerequisites/x86_64-zlib-static/include -I/c/mingw730/prerequisites/x86_64-w64-mingw32-static/include' CPPFLAGS=' -I/c/mingw730/x86_64-730-posix-seh-rt_v5-rev0/mingw64/opt/include -I/c/mingw730/prerequisites/x86_64-zlib-static/include -I/c/mingw730/prerequisites/x86_64-w64-mingw32-static/include' LDFLAGS='-pipe -fno-ident -L/c/mingw730/x86_64-730-posix-seh-rt_v5-rev0/mingw64/opt/lib -L/c/mingw730/prerequisites/x86_64-zlib-static/lib -L/c/mingw730/prerequisites/x86_64-w64-mingw32-static/lib '
Thread model: posix
gcc version 7.3.0 (x86_64-posix-seh-rev0, Built by MinGW-W64 project)

インストーラ自体は環境変数を変更しないのだがインストールしたフォルダに mingw-w64.bat というのができていて,これを起動すると PATH を追加してコマンドプロンプトを起動する。 常用するのであれば自前で環境変数を変更すればよい。

削除する際はコントロールパネルの「プログラムと機能」から可能だがメチャメチャ分かりにくい名前になっている。

Uninstalling Mingw-w64
Uninstalling Mingw-w64

「プログラムと機能」の右上に検索窓があるのでそこで「mingw」と入力すれば上の画面のようになるので,これで該当プログラムを選択して削除すればいいだろう。

みんな大好き Hello World

では動作確認。 以下のコードを用意する。

#include "stdio.h"

void main(void) {
    printf("hello world\n");
}

これをコンパイルして実行する。

$ gcc hello.c

$ a.exe
hello world

よーし,うむうむ,よーし。

参考文献

photo
プログラミング言語C 第2版 ANSI規格準拠
B.W. カーニハン D.M. リッチー 石田 晴久
共立出版 1989-06-15
評価

プログラミング言語Cアンサー・ブック 第2版 C言語による最新アルゴリズム事典 (ソフトウェアテクノロジー) C言語ポインタ完全制覇 (標準プログラマーズライブラリ) 定本 Cプログラマのためのアルゴリズムとデータ構造 (SOFTBANK BOOKS) C実践プログラミング 第3版 工科系の数学 (5) 工科系の数学〈6〉関数論 プログラミング作法 苦しんで覚えるC言語 Cの絵本―C言語が好きになる9つの扉

通称 “K&R”。その筋の人々には「バイブル」と呼ばれる名著(当時は)。

reviewed by Spiegel on 2017-02-19 (powered by G-Tools)

photo
Effective Modern C++ ―C++11/14プログラムを進化させる42項目
Scott Meyers 千住 治郎
オライリージャパン 2015-09-18
評価

C++11/14 コア言語 プログラミング言語C++第4版 Effective C++ 第3版 (ADDISON-WESLEY PROFESSIONAL COMPUTI) C++のエッセンス C++によるプログラミングの原則と実践 C++テンプレートテクニック 第2版 Game Programming Patterns ソフトウェア開発の問題解決メニュー (impress top gear) Effective Python ―Pythonプログラムを改良する59項目 改訂新版 C++ポケットリファレンス Computer Graphics Gems JP 2015 - コンピュータグラフィックス技術の最前線 -

C++ 再勉強中。

reviewed by Spiegel on 2016-09-22 (powered by G-Tools)


  1. SourceForge からのダウンロードなので取扱いに注意。ページの余計なところを触らないこと(笑) [return]