Potresti aver trovato qualcosa di cui sei contento ora, ma ho compilato un binario di unisono che funziona su Android - è possibile usando le istruzioni di agitazione a mano di cui stai parlando - Li ho usati per compilare in modo incrociato il sorgente Linux in Ubuntu 12.10 utilizzando l'NDK Android e con alcune modifiche al codice ora funziona. Segui le istruzioni su https://sites.google.com/site/keigoattic/ocaml-on-android e dovrai fare alcune cose. C'è un file chiamato pty.c nell'origine unisono - trova la seguente sezione:
// openpty
#if defined(__linux)
#include <pty.h>
/*#define HAS_OPENPTY 1*/
#endif
e commentare define HAS_OPENPTY 1
come mostrato. È inoltre necessario aprire ubase / util.ml e modificare:
let homeDir () =
System.fspathFromString "/Your path here"
Commenta da qui:
(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 *))
...A qui!
Quindi dovrai anche modificare 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
E commentare # CLIBS+=-cclib -lutil
come mostrato.
E per quanto ricordo, tutto ha funzionato. L'altro passaggio, una volta compilato, è montare la partizione di sistema Android come scrivibile e copiare all'unisono nella cartella / system dove si trovano tutti i comandi della shell.
Spero che sia utile a qualcuno ... Ho perso molto sonno durante la compilazione.