version 1.1, 2009/03/09 16:18:07 |
version 1.5, 2015/03/07 05:24:23 |
|
|
$OpenXM$ |
$OpenXM: OpenXM/doc/HOWTO/asir2000-on-Windows-x64.sjis,v 1.4 2014/12/31 19:55:01 ohara Exp $ |
|
|
Risa/Asir for Windows Vista x64 のビルド方法 |
Risa/Asir for Windows のビルド方法 (x64 対応) |
|
|
0. 必要な物 |
0. 必要な物 |
|
|
・Windows Vista Business x64 Edition |
・Windows 7 x64 |
・Visual Studio 2008 professional |
・Visual Studio 2010 または Visual Studio 2013 |
・Cygwin |
・Cygwin (bash, gzip, tar, patch, coreutils, perl が必要です。) |
|
ソースの展開および、texi2html に用いる。 |
|
|
|
また、インストーラ(Windows installer 形式ファイル)を作成するには、 |
|
・WiX toolset ver.3.7 (http://wixtoolset.org) |
|
をインストールし、${WIX}/bin/ に PATH を通すこと。 |
|
|
1. ソースの取得 |
1. ソースの取得 |
|
|
CVS クライアントを用いて、OpenXM_contrib2 を checkout する. |
CVS クライアント(例えば、TortoiseCVS, http://www.tortoisecvs.org/)を用いて、 |
|
OpenXM および OpenXM_contrib2 を checkout する. |
|
また、OpenXM_dist/ に gc-7.2b.tar.gz, pari-2.0.17.beta.tgz を置く。 |
|
|
2. gc-7.1 ソースの準備 |
2. ビルド (64bit 版) |
|
|
OpenXM_contrib2/windows/ に gc-7.1 のソースを展開し, 差分 |
「Visual Studio x64 Win64 コマンド プロンプト (2010)」から |
OpenXM_contrib2/asir2000/gc-7.0-risa.diff をソースに当てる. |
次のように入力する. |
|
|
この作業を補助するためにスクリプトが用意されている. |
C> cd OpenXM_contrib2\windows |
OpenXM_contrib2/../OpenXM_dist に gc-7.1.tar.gz を置き, |
C> makepkg.bat |
Cygwin プロンプトから次のように入力する. |
C> nmake msi |
|
|
$ cd OpenXM_contrib2/windows |
makepkg で、asir 以下に全バイナリ・ヘルプが生成される。 |
$ ./extract_gc.sh |
これを zip でアーカイブしたものが、asir_win64_XXXX.zip である。 |
|
XXXX には日付が入る。例えば、2013年11月23日ならば、2013.11.23 となる。 |
|
|
3. ビルド |
また、nmake msi と打つことによって、Windows installer 形式 |
|
asir_win64_XXXX.msi を生成する。 |
|
|
「Visual Studio 2008 x64 Win64 コマンドプロンプト」から |
最後に、次のように入力すると、中間生成ファイル(ヘルプを除く)をすべて消去する。 |
|
|
|
C> nmake distclean |
|
|
|
余計なファイルを消去したので、そのまま、32bit 版の作成に入ることができる。 |
|
|
|
3. ビルド (32bit 版) |
|
|
|
「Visual Studio コマンド プロンプト (2010)」から |
次のように入力する. |
次のように入力する. |
|
|
C> cd OpenXM_contrib2\windows |
C> cd OpenXM_contrib2\windows |
C> makebin64 |
C> makepkg.bat |
|
C> nmake msi |
|
|
|
asir_win32_XXXX.zip および、asir_win32_XXXX.msi が作成される。 |
|
|
|
付録 A. インストーラのアップデート方法 |
|
|
|
*** 事前に WiX tutorial などを読んでおくこと! *** |
|
|
|
OpenXM_contrib2/windows/ 以下にある *.wxs がインストーラのソースである。インストーラを |
|
ビルドするには、Makefile に記載されている情報が必要である。Makefile に書かれている、 |
|
UPGRADEID=B7A582F5-0484-4030-9D38-BFAE00707F0D |
|
の行は、「決して変更してはいけない」。変更するとアップグレードできなくなる。 |
|
|
|
Risa/Asir に改良が加えられたとき、インストーラもアップグレードしなければならない。 |
|
まず、Makefile に |
|
PRODUCTVER=1.0.12 |
|
のような行があるので、このバージョンをあげる(例えば 1.0.13 にする)。次に、Makefile に |
|
PRODUCTID=... |
|
という行(2か所ある)がある。これは各バージョンに対応しているので、この右辺を必ず変更する |
|
こと。右辺は GUIDまたはUUID と呼ばれる 16 バイトの整数値であり、 |
|
guidgen.exe (Microsoft で配布) や FreeBSD では、uuidgen コマンドなどで生成できる。 |
|
|
|
インストールするファイルが増えたり減ったりしたときには、*.wxs も変更しなければならない。 |
|
asir/ および asir/bin/ 以下のファイルは asir.wxs で、それ以外のディレクトリの下にある |
|
ファイルは _*.wxs で管理されている。Makefile のコメント中に _*.wxs の自動生成に用いる |
|
ルールが記載されているが、これを用いて生成したファイルで _*.wxs を上書きしないこと。 |
|
インストールされる各ファイルに対して、それぞれ GUID が与えられているが、一度決められた |
|
この GUID を変更すべきではないからである。(自動生成すると変わってしまう) |
|
基本的に各 Component 要素が、一つのファイルに対応しているので、WiXedit などで追加して |
|
いけばよい。 |
|
|
|
付録 B. Visual Studio 2013 対応 |
|
|
|
Visual Studio 2013 からは、古い機能がいくつか既定ではサポートされなくなった。Risa/Asir の |
|
ビルドに必要な機能の導入方法を説明する。 |
|
|
|
(1) MBCS用 MFC の導入。 |
|
http://go.microsoft.com/?linkid=9832071 から必要なライブラリをダウンロードすること。 |
|
MSDNブログの参考記事 |
|
http://blogs.msdn.com/b/vcblog/archive/2013/07/08/mfc-support-for-mbcs-deprecated-in-visual-studio-2013.aspx |
|
根本的には、asirgui を Unicode 対応に改造するか、MFC を捨てるべきであろう。 |
|
|
|
(2) ntwin32.mak および win32.mak |
|
これらは gc のビルドに必要であるが、VS2013 からサポートされなくなった。 |
|
http://www.microsoft.com/en-us/download/details.aspx?id=8279 から |
|
Microsoft Windows SDK for Windows 7 and .NET Framework 4 をインストールすること。 |
|
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include |
|
にインストールされることを期待している。 |
|
|
|
付録 C. PARI に対する注意 |
|
|
|
Risa/Asir は、ライセンスの都合上で古いバージョンの PARI をリンクしている。 |
|
古いバージョンの PARI では、Windows のような LLP64 モデルの 64bit システムは |
|
考慮されていない。具体的には、ポインタ(64bit)と long 型(32bit)の変換が行われ |
|
ている。最近の Windows には、ASLR(Address Space Layout Randomization)機構が |
|
導入されており、32bit を超えるアドレス範囲にメモリが確保される可能性がある。 |
|
これを回避するには、VS2013 では、link.exe のオプションに -dynamicbase:no を |
|
追加してバイナリを作成する必要がある。 |
|
|