2014-09-19 80 views
1

我想使用OCAML编译器(ver 4.01.0)和GNU make 4.0编译unison源。源代码取自链接(http://www.seas.upenn.edu/~bcpierce/unison//download/releases/unison-2.27.57/在OCAML Unison源编译错误

我提取了tar.gz,然后编写命令“make NATIVE = false”,如用户手册(http://www.seas.upenn.edu/~bcpierce/unison/download/releases/stable/unison-manual.html)中所述,请参阅从临时窗口构建一致性部分。

代码开始编译了几秒钟,但是停止并出现以下错误:

----------

File "/cygdrive/c/unison_build/unison-2.27.57/update.ml", line 1: 
 
Error: The implementation /cygdrive/c/unison_build/unison-2.27.57/update.ml 
 
does not match the interface update.cmi: 
 
... 
 
In module NameMap: 
 
The field `split' is required but not provided 
 
In module NameMap: 
 
The field `choose' is required but not provided 
 
In module NameMap: 
 
The field `max_binding' is required but not provided 
 
In module NameMap: 
 
The field `min_binding' is required but not provided 
 
In module NameMap: 
 
The field `bindings' is required but not provided 
 
In module NameMap: 
 
The field `cardinal' is required but not provided 
 
In module NameMap: 
 
The field `partition' is required but not provided 
 
In module NameMap: 
 
The field `filter' is required but not provided 
 
In module NameMap: 
 
The field `exists' is required but not provided 
 
In module NameMap: 
 
The field `for_all' is required but not provided 
 
In module NameMap: 
 
The field `merge' is required but not provided 
 
In module NameMap: 
 
The field `singleton' is required but not provided 
 
Makefile.OCaml:339: recipe for target 'update.cmo' failed 
 
make: *** [update.cmo] Error 2

+0

您是否考虑在自己的机器上安装Linux?你能从你的机器上的源代码安装Ocaml吗? – 2014-09-19 16:28:12

+0

我发现make没有正确安装。因此,OCAML现在编译,但源文件有一些错误,因为编译器抱怨字段不提供 – 2014-09-19 16:31:17

+0

错误的一个例子是“在模块名称映射: 字段'拆分'是必需的,但不提供 ” – 2014-09-19 16:32:07

回答

0

可能会出现此错误,如果你编译update.ml使用不同版本的OCaml编译器,可以清除_build目录并从头开始重试。

+0

我删除了_build文件夹,所有的CMI和CMO文件。仍然得到相同的错误。 – 2014-09-22 10:05:29

+0

你可以在错误信息中发布什么是“...”吗? – codelion 2014-09-23 13:51:06

1

您应该使用OCaml 3.12编译Unison,它不会与以后的编译器一起编译。内特说,Unison没有在积极发展:

Unison已不再作为一个研究项目积极发展。在这一点上,没有人的工作是添加新功能,修复错误或回答问题。

该报价来自网站。

+1

非常感谢:) – 2014-10-02 15:23:33

3

我得到了确切的同样的错误(与OCaml的3.12)和修补文件update.mli如下(4号线),解决了这个问题:

-module NameMap : Map.S with type key = Name.t 
+module NameMap : MyMap.S with type key = Name.t 

注意,这是一个已知的bug(bug #585453)和我得到了来自debian包here(文件0005-Fix-build-with-OCaml-3.12.patch)的补丁。该补丁至少在2.27.57和2.32.52有效。在同一个软件包中,你也可以找到Ocaml 4的补丁。