Bạn có thể đã tìm thấy thứ gì đó mà bạn hài lòng bây giờ nhưng tôi đã biên dịch một tệp nhị phân unison hoạt động trên Android - có thể sử dụng các hướng dẫn vẫy tay mà bạn đang nói đến - Tôi đã sử dụng chúng để biên dịch chéo nguồn linux trong ub Ubuntu 12.10 bằng cách sử dụng NDK của Android và với một vài thay đổi cho mã, nó hiện đang hoạt động. Thực hiện theo các hướng dẫn tại https://sites.google.com/site/keigoattic/ocaml-on-android và sau đó bạn sẽ cần phải làm một số điều. Có một tệp có tên pty.c trong nguồn unison - tìm phần sau:
// openpty
#if defined(__linux)
#include <pty.h>
/*#define HAS_OPENPTY 1*/
#endif
và bình luận ra define HAS_OPENPTY 1
như hình. Bạn cũng cần mở ubase / produc.ml và chỉnh sửa:
let homeDir () =
System.fspathFromString "/Your path here"
Nhận xét từ đây:
(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 *))
...Tới đây, đến chỗ này!
Sau đó, bạn cũng sẽ phải chỉnh sửa 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
Và bình luận ra # CLIBS+=-cclib -lutil
như hình.
Và theo như tôi có thể nhớ rằng tất cả đều hoạt động. Bước khác một khi được biên dịch là gắn kết phân vùng hệ thống Android của bạn dưới dạng có thể ghi và sao chép unison vào thư mục / system trong đó tất cả các lệnh shell còn lại.
Hy vọng điều đó có ích cho ai đó ... Tôi đã mất rất nhiều giấc ngủ khi được biên dịch.