Командная строка ocaml не может найти "topfind"

Я установил opam, бежать opam init, бежать opam switch 4.06.0 который создал 4.06.0 каталог внутри ~/.opamбеги "Эвал 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

2 ответа

Ты должен бежать

eval `opam config env`

Обратите внимание на кавычки. Они обычно расположены слева от ключа 1 на большинстве современных клавиатур. Команда не должна ничего выводить, если вы видите какой-либо вывод, это означает, что вы выполняете ее неправильно.

Если проблема не устраняется, убедитесь, что вы установили ocamlfind пакет,

opam install ocamlfind

Что, похоже, работает для меня:

  • удостовериться core установлено (opam install core)
  • удостовериться camlp4 установлено (opam install camlp4)
  • Вставить Topfind.don't_load ["compiler-libs.toplevel"];; между #use "topfind";; а также #require "core.top";;согласно этому. Эта проблема не устранена в последней версии ядра (0.9.2).
Другие вопросы по тегам