newLISPのソースコードを改造して、Win64環境でコンパイルできるようしてみました。64ビットプログラミングの練習とnewlispの内部動作を調べることを目的とした個人的なビルドなので、とりあえず動く程度の出来なのは勘弁してください。基にしたnewLISPのバージョンはv.10.3.3です。
作成したバイナリはこのエントリの最下に置いておきます。GPLライセンスに則るならソースか差分パッチも公開すべきなんだろうけどどうしよう…。
パッケージに同梱しているマニュアル(doc/INSTALL)によるとnewLISPがコンパイル可能なメモリモデルはILP32とLP64のみらしく、Win64のメモリモデルであるLLP64はサポートされていない様子。 newLISPではlong型を基本として、整数もポインタも同じビット長として扱っているため、その辺も考慮してソースを改造する必要があります。
NOTE, that newLISP can only be compiled for the IPL32 and LP64 memory models.
主要なメモリモデルの違いは以下の通り:
ILP32 | intとlongとポインタ型が32ビットのモデル。一般的な32ビット環境。 |
---|---|
LP64 | longとポインタ型が64ビットのモデル。64ビットLinuxではこの環境になる。 |
LLP64 | intとlong型が32ビットで、long longとポインタ型が64ビットのモデル。別名IL32P64。 |
公式サイトにてWin32バイナリが配布されているのでWin64バイナリ自体にメリットは特にないんですが、将来的にWin64バイナリのコンパイルがサポートされたら幸せになれるかもしれません(主に私が)。
コンパイル環境
- Windows7 amd64
- MinGW-w64 - TDM-GCCをインストールした
- CygwinまたはMSYS - tarballの解凍など、シェル環境に必要
download (Size:272kB)
0 件のコメント:
コメントを投稿