- 追加された行はこの色です。
- 削除された行はこの色です。
#contents
*ocaml-android 3.12 版 [#f3412331]
- NO WARRANTY - 無保証
** このビルドでできること [#zd6c4526]
- Androidのターミナル (adb shellやTerminal Emulatorなど) から ocamlトップレベルが起動できる。
- ocamlc/ocamloptで生成したバイナリをアプリに組み込むことはできない(多分)。
-- .soが生成できるかどうかわからない(試す価値はある)。もしできれば Android のアプリに組み込めるかもしれない
** 準備 [#x444edaa]
+ Android NDK をダウンロードしてどこかに展開する.
+ 展開したNDKからmemory.h を削除する。
+ C標準ライブラリのヘッダから memory.h をincludeしている行を削除する。
** ビルド [#x492e32f]
+ ocaml-3.12.0をダウンロードし、ホストのocamlrunとocamlyaccをビルド. ''注意:32bit版をビルドすること''
-- 32bit版のビルド方法は http://caml.inria.fr/pub/distrib/ocaml-3.12/notes/INSTALL を参照
tar jxf ocaml-3.12.0.tar.bz2
mv ocaml-3.12.0 ocaml-host
cd ocaml-host
./configure -cc "gcc -m32" -as "as -arch i386" -aspp "gcc -m32 -c" # Snow Leopardの場合。
pushd . && cd byterun && make all && cp ocamlrun ../.. && cd ../yacc && make all && cp ocamlyacc ../.. && popd
+ 別のocaml-3.12.0のツリーを展開し、パッチをあてる
tar jxf ocaml-3.12.0.tar.bz2
mv ocaml-3.12.0 ocaml-target
cd ocaml-target
patch -p1 <../ocaml-android-3.12.0.diff
+ Makefileを修正する
vi config/Makefile
+ ターゲットのocamlrunとocamlyaccをビルドして、退避させ、ホストのものに置き換える
pushd . && cd byterun && make all && mv ocamlrun ocamlrun.target && cd ../yacc && make all && mv ocamlyacc ocamlyacc.target && popd
+ makeする (configure''してはいけない'')
make world
make opt
** インストール [#c4ef61d9]
- ここでは /data/local/tmp/ocaml に置いて起動を確認するが、実行可能属性を付加できないファイルシステム (/sdcardなど) では動かない
adb shell mkdir /data/local/tmp/ocaml
adb push byterun/ocamlrun.target /data/local/tmp/ocaml
adb push ocaml /data/local/tmp/ocaml
for FILE in stdlib/*.cm[ia]; do adb push $FILE /data/local/tmp/ocaml; done
- 実行してみる
adb shell
cd /data/local/tmp/ocaml
./ocamlrun.target ./ocaml
Objective Caml version 3.12.0
# 1. +. 1.;;
- : float = 2.
#