=================================================================== RCS file: /home/cvs/OpenXM/doc/HOWTO/how_to_install_MinGW-MSYS2.txt,v retrieving revision 1.3 retrieving revision 1.5 diff -u -p -r1.3 -r1.5 --- OpenXM/doc/HOWTO/how_to_install_MinGW-MSYS2.txt 2015/08/06 23:51:21 1.3 +++ OpenXM/doc/HOWTO/how_to_install_MinGW-MSYS2.txt 2015/09/16 06:48:06 1.5 @@ -1,17 +1,17 @@ -MinGW+msys 環境の構築 +MinGW+MSYS2 環境の構築 1. msys2-64 をインストール http://sourceforge.net/projects/msys2/files/Base/ より、msys2-x86_64-20150512.exe をダウンロードし、c:\msys64にインストール -2. スタートメニューから MSYS2 64bit→MinGW-w64 Win64 shell を起動する。 +2. スタートメニューから MSYS2 64bit→MinGW-w64 Win64 Shell を起動する。 まずは、パッケージデータベースを更新する。 pacman -Sy 次に、初期導入パッケージのアップデート pacman -Su -としてから、MinGW-w64 Win64 shell の再起動、これを数度繰り返す。 +としてから、MinGW-w64 Win64 Shell の再起動、これを数度繰り返す。 アップデートがなくなったことを確認。 以下を実行。 @@ -30,11 +30,76 @@ pacman -S patch pacman -S diffutils ※この環境には、3種類のコンパイラがある -- msys2-devel でインストールされる gcc は、MSYS2 shell から使用し、これで生成したバイナリは、cygwin みたいに msys-2.0.dll を必要とする。 -- mingw-w64-i686-toolchain の gcc は、MinGW-w64 Win32 shell から使用し、これで生成したバイナリは、Windows native 32bit。 -- mingw-w64-x86_64-toolchain の gcc は、MinGW-w64 Win64 shell から使用し、これで生成したバイナリは、Windows native 64bit。 +- msys2-devel でインストールされる gcc は、MSYS2 Shell から使用し、これで生成したバイナリは、cygwin みたいに msys-2.0.dll を必要とする。 +- mingw-w64-i686-toolchain の gcc は、MinGW-w64 Win32 Shell から使用し、これで生成したバイナリは、Windows native 32bit。 +- mingw-w64-x86_64-toolchain の gcc は、MinGW-w64 Win64 Shell から使用し、これで生成したバイナリは、Windows native 64bit。 -3. /usr以下に次のディレクトリを作成 +3. win32threads な gcc のインストール方法(オプション) +前節の pacman を用いてインストールした msys-2.0.dll に依存しない gcc は、 +32bit版: スレッド形式が posix, 例外処理形式が DWARF-2 +64bit版: スレッド形式が posix, 例外処理形式が seh +に設定されてビルドされている。 + +スレッド形式が posix だと、この gcc で作成する DLL は libgcc_s_*.dll を動的リンクする場合がある。 +これを避けるには、使用する gcc を +32bit版: スレッド形式が win32threads, 例外処理形式が DWARF-2 +64bit版: スレッド形式が win32threads, 例外処理形式が seh +にする必要がある。gcc をビルドし直すのは大変なので、mingw-w64 project で配布されているものを利用する。 + +http://sourceforge.net/projects/mingw-w64/ +の [Files] から以下をダウンロードする。 +32bit: +Toolchains targeting Win32 -> PersonalBuilds -> mingw-builds -> 5.2.0 -> threads-win32 -> dwarf -> i686-5.2.0-release-win32-dwarf-rt_v4-rev0.7z +64bit: +Toolchains targeting Win64 -> PersonalBuilds -> mingw-builds -> 5.2.0 -> threads-win32 -> seh -> x86_64-5.2.0-release-win32-seh-rt_v4-rev0.7z + +これを解凍し、c:\msys64 以下にそれぞれ +c:\msys64\mingw32_w32threads +c:\msys64\mingw64_w32threads +として +c:\msys64\mingw32_w32threads\bin, c:\msys64\mingw32_w32threads\lib などとなるようにコピーする。 + +c:\msys64 にある +mingw32_shell.bat (64bit版は mingw64_shell.bat) を +mingw32_w32threads_shell.bat (64bit版は mingw64_w32threads_shell.bat) という名前でコピーし、 +その25行目を以下に変更 +set MSYSTEM=MINGW32_W32 (64bit版は set MSYSTEM=MINGW64_W32) + +c:\msys64\etc\profile の45行目に以下を追加 + MINGW32_W32) + MINGW_MOUNT_POINT=/mingw32_w32threads + PATH="${MINGW_MOUNT_POINT}/bin:${MSYS2_PATH}:${PATH}" + PKG_CONFIG_PATH="${MINGW_MOUNT_POINT}/lib/pkgconfig:${MINGW_MOUNT_POINT}/share/pkgconfig" + ACLOCAL_PATH="${MINGW_MOUNT_POINT}/share/aclocal:/usr/share/aclocal" + MANPATH="${MINGW_MOUNT_POINT}/share/man:${MANPATH}" + ;; + MINGW64_W32) + MINGW_MOUNT_POINT=/mingw64_w32threads + PATH="${MINGW_MOUNT_POINT}/bin:${MSYS2_PATH}:${PATH}" + PKG_CONFIG_PATH="${MINGW_MOUNT_POINT}/lib/pkgconfig:${MINGW_MOUNT_POINT}/share/pkgconfig" + ACLOCAL_PATH="${MINGW_MOUNT_POINT}/share/aclocal:/usr/share/aclocal" + MANPATH="${MINGW_MOUNT_POINT}/share/man:${MANPATH}" + ;; + +最後に、Windowsのスタートメニューの[MSYS2 64bit]を右クリック→開く(Open)で +ファイルエクスプローラを起動し、ショートカットの +MinGW-w64 Win32 Shell (64bit版は MinGW-w64 Win64 Shell) を +MinGW-w64 Win32 Shell w32threads (64bit版は MinGW-w64 Win64 Shell w32threads) +という名前でコピーし、右クリック→プロパティから[ターゲット]を以下に変更 +C:\Windows\System32\cmd.exe /A /Q /K C:\msys64\mingw32_w32threads_shell.bat +(64bit版は +C:\Windows\System32\cmd.exe /A /Q /K C:\msys64\mingw64_w32threads_shell.bat) + + +以上の作業により、このショートカットから起動したターミナル内で win32threads 形式の gcc +が使用できるようになる。 +つまり、MinGW-w64 Win32 Shell w32threads から起動したターミナルで使用する gcc は +32bit版: スレッド形式が win32threads, 例外処理形式が DWARF-2 +であり、MinGW-w64 Win64 Shell w32threads から起動したターミナルで使用する gcc は +64bit版: スレッド形式が win32threads, 例外処理形式が seh +となる。 + +4. /usr以下に次のディレクトリを作成 cd /usr mkdir local mkdir local/bin @@ -42,24 +107,51 @@ mkdir local/lib mkdir local/include mkdir local/share -4. gmp-5.1.3のビルドとインストール +5. gmp-5.1.3 のビルドとインストール cd gmp-5.1.3 -./configure --prefix=/usr/local +wget -O config.guess 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD' +wget -O config.sub 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD' +./configure --disable-static --enable-shared +※MinGW-w64 Win32 Shell (64bit Windowsでの32bit環境)において、mingw32 版のバイナリをビルドしたい時は、 + ./configure ABI=32 --build=x86_64-w64-mingw32 --host=i686-w64-mingw32 --disable-static --enable-shared make make install -5. gc-7.4.2 +6. mpfr-3.1.3 のビルドとインストール +cd mpfr-3.1.3 +wget -O config.guess 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD' +wget -O config.sub 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD' +./configure --disable-static --enable-shared --with-gmp=/usr/local --disable-thread-safe +※MinGW-w64 Win32 Shell (64bit Windowsでの32bit環境)において、mingw32 版のバイナリをビルドしたい時は、 + ./configure ABI=32 --disable-static --enable-shared --with-gmp=/usr/local --disable-thread-safe +make +make install + +7. mpc-1.0.3 のビルドとインストール +cd mpc-1.0.3 +wget -O config.guess 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD' +wget -O config.sub 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD' +./configure --disable-static --enable-shared --with-gmp=/usr/local --with-mpfr=/usr/local +※MinGW-w64 Win32 Shell (64bit Windowsでの32bit環境)において、mingw32 版のバイナリをビルドしたい時は、 + ./configure ABI=32 --disable-static --enable-shared --with-gmp=/usr/local --with-mpfr=/usr/local +make +make install + +8. gc-7.4.2 のビルド cd gc-7.4.2 wget http://www.hboehm.info/gc/gc_source/libatomic_ops-7.4.0.tar.gz -tar zxvf libatomic_ops-7.4.0.tar.gz +tar zxf libatomic_ops-7.4.0.tar.gz mv libatomic_ops-7.4.0 libatomic_ops -wget -O config.guess 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD' -wget -O config.sub 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD' -./configure --disable-threads +./configure make -6. asirのビルド (まだビルドできていない) +9. asir のビルドとインストール +cd asir2000 ./configure make make install make install-lib + +TODO: +- ctrl+c での中断 +- ox_launch_nox による ox サーバの起動と通信