2

我已经安装opam、运行opam init、运行,它在里面opam switch 4.06.0创建了一个4.06.0目录~/.opam,运行“eval opam confing env”,其中包括导出,$OCAML_TOPLEVEL_PATH~/.opam/4.06.0/lib/toplevel启动时ocaml我得到了可怕的:

$ ocaml
        OCaml version 4.06.0

Cannot find file topfind.
Unknown directive `camlp4o'.
# 

我已经看过这个两个都没有解决我的问题而且我束手无策(第一次设置 OCaml)。这是我的~/.ocamlinit

(* Added by OPAM. *)
let () =
  try Topdirs.dir_directory (Sys.getenv "OCAML_TOPLEVEL_PATH")
  with Not_found -> ()
;;
#use "topfind"
#camlp4o
#thread
#require "core.top"
#require "core.syntax"

编辑:看起来我还没有安装core,安装core解决了这个问题,但现在在我得到的大量导入诊断中:

Exception:
Invalid_argument
 "The ocamltoplevel.cma library from compiler-libs cannot be loaded inside the OCaml toplevel".

然后再往下一点:

Raised at file "pervasives.ml", line 33, characters 25-45
Called from file "toplevel/toploop.ml", line 468, characters 4-128
Called from file "toplevel/topdirs.ml", line 144, characters 10-51
    Camlp4 Parsing version 4.06.0
4

2 回答 2

6

你应该跑

eval `opam config env`

注意反引号。它们通常位于1大多数现代键盘的按键左侧。该命令不应输出任何内容,如果您看到任何输出,则表示您正在错误地运行它。每次启动新的 shell 时都必须运行此命令来激活 opam 安装(除非您已将此命令放在 shell 初始化脚本中,例如.bashrc

如果问题仍然存在,请确保您已安装该ocamlfind软件包,

opam install ocamlfind
于 2017-11-27T13:13:39.040 回答
4

什么似乎对我有用:

  • 确保core已安装 ( opam install core)
  • 确保camlp4已安装 ( opam install camlp4)
  • 插入Topfind.don't_load ["compiler-libs.toplevel"];;中间#use "topfind";;#require "core.top";;,根据this。这个问题似乎在最新版本的核心 (0.9.2) 中没有得到解决。
于 2017-11-27T15:07:43.723 回答