OCaml:cil.cmi不是编译的接口错误

时间:2013-03-07 10:05:59

标签: ocaml

我正在编译一个用OCaml编写的工具框架,并且是解释OCaml的新手。运行scons时收到此错误:

ocamlc.opt -dtypes -I instrumentor -I ocaml -I ./cbi/cil/cil-1.4.0/obj/x86_LINUX 
-w Ael -warn-error A -o instrumentor/phase.cmi -c instrumentor/phase.mli

File "instrumentor/phase.mli", line 1, characters 0-1:
Error: /u/j/o/joy/Desktop/cbi/cil/cil-1.4.0/obj/x86_LINUX/cil.cmi
is not a compiled interface

instrumentor / phase.mli的内容:

type phase = string * (Cil.file -> unit)

我正在使用OCaml 3.11.1。如果您可以提供修复此错误的提示,将会很有帮助。


正如下面提到的@gasche:错误可能是由于所用编译器之间的版本不匹配造成的。此链接http://ocaml.org/tutorials/common_error_messages.html包含更多信息和其他常见错误列表。

1 个答案:

答案 0 :(得分:2)

疯狂的猜测,但这可能是:

  • 构建系统中将无关文件复制到.cmi的问题;你能看看有问题的cil.cmi的内容,看看它是否显然不是cmi(例如文本文件)。您还可以使用ocamlobjinfo <file>获取有关文件的信息,因为这些文件确实属于OCaml格式

  • Cil的编译文件与您为项目使用的编译器版本之间的版本差异(我希望编译器能够识别出这是一个有效的cmi,版本号错误,并提供更多信息错误信息,但你永远不知道)。确保使用与您当前使用的相同版本的OCaml生成的cil文件。