LoginSignup
5
7

More than 5 years have passed since last update.

WindowsのバイナリをMac OS X上のMXEでビルドする

Posted at

Mac OS X (El Capitan) 上で Windowsのバイナリをビルドする案件のために、MXE (M cross environment) でクロスコンパイル環境を構築したので、メモしておく。

準備

homebrewはインストール済みとする。MXEに必要なパッケージをインストールする。

brew install autoconf automake coreutils gdk-pixbuf gettext gnu-sed intltool libtool p7zip wget xz

keg-onlyのパッケージは手動でbrew linkする必要があるかもしれない。例えば、

brew link gettext

インストール

 git clone https://github.com/mxe/mxe.git

このままmakeするとすべてのパッケージをビルドしてしまう。もしWindows 64bit用のgccのみが必要ならば、mxe/settings.mkを以下のように設定する。

settings.mk
MXE_TARGETS := x86_64-w64-mingw32.static
LOCAL_PKG_LIST := gcc
.DEFAULT local-pkg-list:
local-pkg-list: $(LOCAL_PKG_LIST)

Windows 32bitだったら、x86_64-w64-mingw32.staticの代わりにi686-w64-mingw32.staticとする。
そしてビルドする。

cd mxe
make 

その他に必要なパッケージがあれば、

make boost

のような感じでビルドすることができる。

クロスコンパイル

コンパイラのPATHを設定する。

export PATH=/path/to/mxe/usr/bin:$PATH

configureを使ってビルドする場合には、

./configure --host=x86_64-w64-mingw32.static
make

でビルドできる。

よくあるエラー

他の環境だと起きないが、mingwだと起こるエラーがいくつかある。

undefined reference to `rpl_malloc'

とか言われてしまう場合には、

export ac_cv_func_realloc_0_nonnull=yes
export ac_cv_func_malloc_0_nonnull=yes

として configure からやり直しすれば良い。

テスト環境

出来上がったバイナリはwineで実行できる。homebrewなら

brew install wine winetricks

で一発インストールが可能。ただし、Mac OS Xでは32bitのバイナリしか実行できない。

5
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
7