Skip to content

Instantly share code, notes, and snippets.

@hangingman
Last active August 29, 2015 14:16
Show Gist options
  • Save hangingman/57349586faa78843422e to your computer and use it in GitHub Desktop.
Save hangingman/57349586faa78843422e to your computer and use it in GitHub Desktop.
mingwクロスコンパイル環境構築スクリプト
#!/bin/bash +x
#
# ※先に、以下のバイナリを $ tar xvf *** -C /usr で展開する
# i686-w64-mingw32-gcc-4.8.0-linux64_rubenvb.tar.xz
# x86_64-w64-mingw32-gcc-4.8.0-linux64_rubenvb.tar.xz
#
MINGW32_CONF="--prefix=/usr/mingw32/i686-w64-mingw32 --build=x86_64-unknown-linux-gnu --host=i686-w64-mingw32 --target=i686-w64-mingw32"
MINGW64_CONF="--prefix=/usr/mingw64/x86_64-w64-mingw32 --build=x86_64-unknown-linux-gnu --host=x86_64-w64-mingw32 --target=x86_64-w64-mingw32"
MINGW32_SRC=/usr/local/src/mingw32
MINGW64_SRC=/usr/local/src/mingw64
WGET=wget
CP=cp
TAR=tar
# export PATH for cross compiler
export PATH=/usr/mingw32/bin:$PATH
export PATH=/usr/mingw64/bin:$PATH
mkdir -p /usr/local/src || exit 1
rm -rf /usr/local/src/mingw32 || exit 1
rm -rf /usr/local/src/mingw64 || exit 1
mkdir -p /usr/local/src/mingw32 || exit 1
mkdir -p /usr/local/src/mingw64 || exit 1
# libxml2
cd ${MINGW32_SRC}
${WGET} ftp://xmlsoft.org/libxml2/libxml2-2.9.0.tar.gz
${CP} libxml2-2.9.0.tar.gz ${MINGW64_SRC}
${TAR} xvf libxml2-2.9.0.tar.gz
cd libxml2-2.9.0
./configure ${MINGW32_CONF}
make && make install || exit 1
cd ${MINGW64_SRC}
${TAR} xvf libxml2-2.9.0.tar.gz
cd libxml2-2.9.0
./configure ${MINGW64_CONF}
make && make install || exit 1
# zlib
cd ${MINGW32_SRC}
${WGET} http://zlib.net/zlib-1.2.8.tar.gz
${CP} zlib-1.2.8.tar.gz ${MINGW64_SRC}
${TAR} xvf zlib-1.2.8.tar.gz
cd zlib-1.2.8
make -f win32/Makefile.gcc PREFIX=i686-w64-mingw32- || exit 1
make -f win32/Makefile.gcc install \
BINARY_PATH=/usr/mingw32/i686-w64-mingw32/bin \
INCLUDE_PATH=/usr/mingw32/i686-w64-mingw32/include \
LIBRARY_PATH=/usr/mingw32/i686-w64-mingw32/lib SHARED_MODE=1 || exit 1
cd ${MINGW64_SRC}
${TAR} xvf zlib-1.2.8.tar.gz
cd zlib-1.2.8
make -f win32/Makefile.gcc PREFIX=x86_64-w64-mingw32- || exit 1
make -f win32/Makefile.gcc install \
BINARY_PATH=/usr/mingw64/x86_64-w64-mingw32/bin \
INCLUDE_PATH=/usr/mingw64/x86_64-w64-mingw32/include \
LIBRARY_PATH=/usr/mingw64/x86_64-w64-mingw32/lib SHARED_MODE=1 || exit 1
# openssl
cd ${MINGW32_SRC}
${WGET} https://www.openssl.org/source/openssl-1.0.2.tar.gz
${CP} openssl-1.0.2.tar.gz ${MINGW64_SRC}
${TAR} xvf openssl-1.0.2.tar.gz
cd openssl-1.0.2
export CROSS_COMPILE=i686-w64-mingw32-
./Configure -DHAVE_STRUCT_TIMESPEC \
-L/usr/mingw32/i686-w64-mingw32/lib -lz -lws2_32 \
--prefix=/usr/mingw32/i686-w64-mingw32 \
--openssldir=/usr/mingw32/i686-w64-mingw32/ssl \
zlib mingw shared
make && make install || exit 1
cd ${MINGW64_SRC}
${TAR} xvf openssl-1.0.2.tar.gz
cd openssl-1.0.2
export CROSS_COMPILE=x86_64-w64-mingw32-
./Configure -DHAVE_STRUCT_TIMESPEC \
-L/usr/mingw64/x86_64-w64-mingw32/lib -lz -lws2_32 \
--prefix=/usr/mingw64/x86_64-w64-mingw32 \
--openssldir=/usr/mingw64/x86_64-w64-mingw32/ssl \
zlib mingw64 shared no-asm
make && make install || exit 1
# curl
cd ${MINGW32_SRC}
${WGET} http://curl.haxx.se/download/curl-7.41.0.tar.gz
${CP} curl-7.41.0.tar.gz ${MINGW64_SRC}
${TAR} xvf curl-7.41.0.tar.gz
cd curl-7.41.0
export CC=i686-w64-mingw32-gcc
./configure ${MINGW32_CONF} --enable-shared --disable-debug
make && make install || exit 1
cd ${MINGW64_SRC}
${TAR} xvf curl-7.41.0.tar.gz
cd curl-7.41.0
export CC=x86_64-w64-mingw32-gcc
./configure ${MINGW64_CONF} --enable-shared --disable-debug
make && make install || exit 1
# wxWidgets
cd /usr/local/src
git clone https://github.com/wxWidgets/wxWidgets.git
cd wxWidgets
git checkout WX_3_0_2
cd ../ && mkdir -p ${MINGW32_SRC}/wxWidgets-3.0.2 && mkdir -p ${MINGW64_SRC}/wxWidgets-3.0.2
cd ${MINGW32_SRC}/wxWidgets-3.0.2
/usr/local/src/wxWidgets/configure --prefix=/usr/mingw32/i686-w64-mingw32 \
--host=i686-w64-mingw32 --enable-unicode --disable-debug CXXFLAGS='-std=gnu++11'
make && make install || exit 1
cd ${MINGW64_SRC}/wxWidgets-3.0.2
/usr/local/src/wxWidgets/configure --prefix=/usr/mingw64/x86_64-w64-mingw32 \
--host=x86_64-w64-mingw32 --enable-unicode --disable-debug CXXFLAGS='-std=gnu++11'
make && make install || exit 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment