【问题标题】:LLVM tutorial OCaml Compilation ErrorLLVM教程OCaml编译错误
【发布时间】:2016-05-02 20:51:49
【问题描述】:

我一直在学习 OCaml 的 LLVM Kaleidoscope 教程。在second part of the tutorial 上,我已经导航到文件夹中的示例代码

OCaml-Kaleidoscope\Chapter2

使用

编译时遇到问题

ocamlbuild toy.byte

在 cygwin 上。这是教程中给出的编译代码。

我得到的错误是

''ocamlc.opt -c -I +camlp4 -pp camlp4of -o parser.cmo parser.ml
File "parser.ml", line 1:
Error: The files C:\OCaml\lib\pervasives.cmi and token.cmi
   make inconsistent assumptions over interface Pervasives
Exit code 2 while executing this command:
  ''ocamlc.opt -c -I +camlp4 -pp camlp4of -o parser.cmo parser.ml

我正在使用来自 this link 的 llvm 3.8.0 版和 OCaml 4.02.3 版。

我需要做什么来解决这个问题?

【问题讨论】:

  • 很难说到底发生了什么,但您似乎使用了多个 OCaml 编译器版本。

标签: compiler-errors ocaml llvm ocamlbuild


【解决方案1】:

通常当你第一次编译一个项目,然后更新一个 ocaml 库(或 Ocaml),然后你再次尝试编译你的程序时,就会发生这种错误。 (这里,token.cmi应该是之前编译过的,现在对改变的库做一些假设)

为了避免这个错误,最简单的方法是清理你的工作目录

ocamlbuild -clean

如果你使用的是 Ocaml,你可以使用

make clean

如果你有一个配置的 Makefile,或者手动使用类似的东西

rm -rf _build/ *.cmo *.cmi *.cmx *.byte *.opt *.cma 

【讨论】: