あなたは今あなたが満足している何かを見つけたかもしれませんが、私はアンドロイドで動作するユニゾンのバイナリをコンパイルしました-あなたが話している手を振る指示を使用して可能です-私はそれらを使用してubuntu 12.10内のLinuxソースをクロスコンパイルしましたAndroid NDKを使用し、コードにいくつかの変更を加えて、現在動作しています。https://sites.google.com/site/keigoattic/ocaml-on-androidの指示に従ってください。その後、いくつかのことを行う必要があります。ユニゾンソースにpty.cというファイルがあります。次のセクションを見つけてください。
// openpty
#if defined(__linux)
#include <pty.h>
/*#define HAS_OPENPTY 1*/
#endif
define HAS_OPENPTY 1
示されているようにコメントアウトします。また、ubase / util.mlを開いて編集する必要があります。
let homeDir () =
System.fspathFromString "/Your path here"
ここからコメントアウト:
(if (osType = `Unix) || isCygwin then
safeGetenv "HOME"
else if osType = `Win32 then
(*We don't want the behavior of Unison to depends on whether it is run
from a Cygwin shell (where HOME is set) or in any other way (where
HOME is usually not set)
try System.getenv "HOME" (* Windows 9x with Cygwin HOME set *)
with Not_found ->
*)
try System.getenv "USERPROFILE" (* Windows NT/2K standard *)
with Not_found ->
try System.getenv "UNISON" (* Use UNISON dir if it is set *)
with Not_found ->
"c:/" (* Default *)
else
assert false (* osType can't be anything else *))
...ここまで!
その後、Makefile.Ocamlも編集する必要があります。
CWD=$(shell pwd)
EXEC_EXT=
WINOBJS=
SYSTEM=generic
# openpty is in the libutil library
ifneq ($(OSARCH),solaris)
ifneq ($(OSARCH),osx)
# CLIBS+=-cclib -lutil
endif
endif
buildexecutable::
@echo Building for Unix
endif
endif
そして# CLIBS+=-cclib -lutil
、示されているようにコメントアウトします。
そして、私が知る限り、すべてがうまくいったことを覚えています。コンパイルされたもう1つの手順は、Androidシステムパーティションを書き込み可能としてマウントし、残りのすべてのシェルコマンドがある/ systemフォルダーにunisonをコピーすることです。
それが誰かに役立つことを願っています...私はそれをコンパイルして多くの睡眠を失いました。