2014-09-19 79 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的補丁。