您可能现在已经找到了满意的东西,但是我已经编译了可在android上使用的统一格式二进制文件-可以使用您正在谈论的挥手说明-我用它们来交叉编译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
,如图所示。
据我所知,所有方法都有效。编译后的另一步是将您的android系统分区挂载为可写状态,然后将其一致地复制到所有其他shell命令所在的/ system文件夹中。
希望这对某人有帮助...编译它使我失去了很多睡眠。