再びtdm-gccのMinGW64環境を作成してみた
1.tdm64-gcc-4.7.3 の導入
ダウンロード先は以下
TDM-GCC : Download
Bundle Installerで64bit用の環境をダウンロード。
GCC-4.8だといろんなものがビルドできないので4.7の最終版で。
とりあえずtdm-gccでc:/MinGW64に64bit環境をインストール。
その後、以下からMinGWのインストーラーをダウンロードして
msys環境を足す。
MinGW - Minimalist GNU for Windows - Browse Files at SourceForge.net
ポイント
- ・GUIの設定画面でMinGWのホームをC:\MinGW64に設定する
- ・MinGW側のツールはtdm-gccのものがあるので何もインストールせず、msys-baseやmsysのdevelopper向けツールをダウンロードして設定する
- ・あくまでmsysはi386環境のUNIX環境もどきなのでコンパイル時はビルドしているマシンはi386、ビルドのターゲットはx86_64という考え
2.各ライブラリのビルド
いろいろなサイトを参考にした
特に、下記のGaia-SINSのサイトは非常にお世話になった
Gaia-SINSというソフトウェア自体は、地図と情報をSQLによって管理するツールのようだが、MSW版のバイナリを配布するためにMinGW + msys + wxWidgets + libcurl、その他もろもろのオープンソースのライブラリを使用している。
本家サイト
The Gaia-SINS federated project home-page
MinGW64について
MinGW 64 how-to
http://go.kblog.us/2009/07/mingw-to-build-curl-for-windows.html
1. zlib-1.2.8
$ wget http://zlib.net/zlib-1.2.8.tar.gz $ tar xvf zlib-1.2.8.tar.gz $ cd zlib-1.2.8 $ make -f win32/Makefile.gcc CC=x86_64-w64-mingw32-gcc $ make -f win32/Makefile.gcc install BINARY_PATH=/mingw/bin INCLUDE_PATH=/mingw/include LIBRARY_PATH=/mingw/lib SHARED_MODE=1
2.libxml2-2.9.0
makeの前に下記のサイトを参考にしてソースを修正する
Re: [xml] undefined reference to `_imp__xmlFree' error on mingw with msy
$ wget ftp://xmlsoft.org/libxml2/libxml2-2.9.0.tar.gz $ tar xvf libxml2-2.9.0.tar.gz $ cd libxml2-2.9.0 $ ./configure --prefix=/mingw --build=x86_64-w64-mingw32 --host=x86_64-w64-mingw32 \ --target=x86_64-w64-mingw32 --enable-shared --with-threads=no CFLAGS=-O2 $ make && make install
3.openssl-1.0.0d
makeの前にMakefile中の'CC'と'MAKEDEPPROG'をx86_64-w64-mingw32-gccに設定しておく
$ wget http://www.openssl.org/source/openssl-1.0.1d.tar.gz $ tar xvf openssl-1.0.1d.tar.gz $ cd openssl-1.0.1d $ ./Configure -DHAVE_STRUCT_TIMESPEC -L/mingw/lib -lz -lws2_32 --prefix=/mingw zlib mingw64 shared no-asm $ make && make install
4.curl-7.30.0
curlをMinGW64でビルドするとver.7.30だけが唯一無事にビルドできる。
それ以降のバージョンだとソースの改修が入っていてどうにもならない。
-
- host=<...>にはi686-w64-mingw32を設定する。
curlのconfigureはわりと細かいところまで設定を見ているのでこうしないとconftestに通らない。
また、--build/--targetは自動判別されるため、設定する必要はない。設定するとなぜかDLLがビルドされていなくて頭抱えてた。
$ wget http://curl.haxx.se/download/curl-7.30.0.tar.bz2 $ tar xvf curl-7.30.0.tar.bz2 $ ./configure --prefix=/mingw --host=x86_64-w64-mingw32 \ --enable-shared --disable-debug
5.wxWidgets-3.0.0
ビルドする場所を綺麗に保つには、GitHubとconfigureの別場所ビルドを使用すると良い。
また、C++11は-std=gnu++11を指定すると良い。
$ cd /usr/local/src $ git clone https://github.com/wxWidgets/wxWidgets.git $ cd wxWidgets $ git checkout WX_3_0_0 $ cd ../ && mkdir wxWidgets-3.0.0 $ cd wxWidgets-3.0.0 $ ../wxWidgets/configure --prefix=/mingw \ --host=x86_64-w64-mingw32 --enable-unicode --disable-debug CXXFLAGS='-std=gnu++11'