MinGW-w64を導入

Win32/64向けにC/C++のクロスコンパイラ環境をUbuntu(Trusty Tahr)上にちょこっと作る*1

$ apt-get --simulate install mingw-w64
注意: これはシミュレーションにすぎません!
...snip
以下の特別パッケージがインストールされます:
  binutils-mingw-w64-i686 binutils-mingw-w64-x86-64 g++-mingw-w64
  g++-mingw-w64-i686 g++-mingw-w64-x86-64 gcc-mingw-w64 gcc-mingw-w64-base
  gcc-mingw-w64-i686 gcc-mingw-w64-x86-64 gfortran-mingw-w64
  gfortran-mingw-w64-i686 gfortran-mingw-w64-x86-64 gnat-mingw-w64
  gnat-mingw-w64-base gnat-mingw-w64-i686 gnat-mingw-w64-x86-64
  mingw-w64-common mingw-w64-i686-dev mingw-w64-x86-64-dev
提案パッケージ:
  gcc-4.8-locales
...snip

mingw-w64を指定するだけだと推奨パッケージもインストールされてしまう。
FORTRANはともかくAdaは自分には不要です。
差し当たり使う見込みの無いこの二つを除外するには、

$ apt-get --simulate install --no-install-recommends mingw-w64
注意: これはシミュレーションにすぎません!
...snip
以下の特別パッケージがインストールされます:
  binutils-mingw-w64-i686 binutils-mingw-w64-x86-64 g++-mingw-w64
  g++-mingw-w64-i686 g++-mingw-w64-x86-64 gcc-mingw-w64 gcc-mingw-w64-base
  gcc-mingw-w64-i686 gcc-mingw-w64-x86-64 mingw-w64-common mingw-w64-i686-dev
  mingw-w64-x86-64-dev
提案パッケージ:
  gcc-4.8-locales
推奨パッケージ:
  gfortran-mingw-w64 gnat-mingw-w64
...snip

推奨パッケージをインストールしないようにapt-getに指示すればよい。
本当にインストールするときはsudoを忘れずに。

$ sudo apt-get install --no-install-recommends mingw-w64
...snip
58.1 MB のアーカイブを取得する必要があります。
この操作後に追加で 312 MB のディスク容量が消費されます。
...snip

300MB強も容量食べてる……
とりあえず試しに、

hello.c
#include <windows.h>
#include <tchar.h>

int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
    MessageBox(NULL, _T("hello world"), _T("greeting"), MB_OK);
    return 0;
}

をWin32向けにコンパイルして、

$ i686-w64-mingw32-gcc -Wall -ansi -pedantic -o hello.exe hello.c -mwindows
$ file hello.exe 
hello.exe: PE32 executable (GUI) Intel 80386, for MS Windows
$ objdump -p hello.exe | grep "DLL N"
        DLL Name: KERNEL32.dll
        DLL Name: msvcrt.dll
        DLL Name: USER32.dll

Win32向けの実行イメージが出力され、
依存するDLLも想定したものになっているようだ。
Win32環境にできたものを持っていって*2、実行すると、
メッセージボックスがきちんと表示された。すばらっ

*1:Win側にもMinGWを入れてはあるのですが

*2:理由あってwineはインストールしていない