• 追加された行はこの色です。
  • 削除された行はこの色です。
#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
 cp ../ocamlrun byterun && cp ../ocamlyacc yacc
+ 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.
 #

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS