Командная строка 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).