2012年8月12日日曜日

ubuntu 12.04 64bitでWin32をクロスコンパイル1

ubuntu 12.04  64bitでWin32(win64)をクロスコンパイル

その経過をとりあえず覚書しておけと思ったので書いておく

まず test.cppとして以下のソースを書いた。
#include <windows.h>

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow)
{
      MessageBox(NULL,
          "大川浩司",
          "Hello World", MB_OK);
            return 0;
}
 

でこのソースをS-JISで保存する。(UTF8だと文字化け)

でコンパイルするにはmingwかmingw-w64パッケージの
i586-mingw32msvc-g++ (mingw)  
i686-w64-mingw32-g++  (mingw-w64)
x86_64-w64-mingw32-g++(mingw-w64)
のどれかを使う。
私の場合mingw-w64を入れたのでi686-w64-mingw32-g++,x86_64-w64-mingw32-g++
をつかった。

$ i686-w64-mingw32-g++   test.cpp -o test.exe
$ x86_64-w64-mingw32-g++   test.cpp -o test.exe
で、それぞれWin32,Win64の実行ファイルができる。

確認は 
$file test.exe
で32,64bitをチェックできる。
実行は
$wine test.exe
とするかもしくはWindowsで実行すればいい。