在utop中需要“core”会出错:Unix.Unix_error(Unix.ENOENT,“sysconf”,“”)

时间:2017-09-14 02:53:14

标签: ocaml opam utop ocaml-core ocaml-dune

当我尝试在#require "core"中致电utop时,收到错误消息:

utop # #require "core";;
Exception: Unix.Unix_error (Unix.ENOENT, "sysconf", "").
Raised by primitive operation at unknown location
Called from file "toplevel/topdirs.ml", line 144, characters 10-51

我的当前目录中有一个.ocamlinit文件,如下所示:

(* Added by OPAM. *)
let () =
  try Topdirs.dir_directory (Sys.getenv "OCAML_TOPLEVEL_PATH")
  with Not_found -> ()
;;

#use "topfind";;
#thread;;
#camlp4o;;

可能导致此错误发生的原因是什么?它似乎是Findlib的一个错误?

我尝试删除~/.opam目录,重新运行opam initopam switch set 4.05.0,然后重新安装coreutop,但此错误仍然存​​在。是否有可能我还需要重新安装opam?我目前正在使用opam-1.2.2的二进制版本。

我正在运行Arch Linux,我相信在更新系统上的所有软件包之后会出现此错误,但我不确定。

我仍然可以使用jbuilder来构建可执行文件,但是在运行可执行文件时,它们会因类似错误而失败:

$ _build/install/default/bin/my_executable
Uncaught exception:

  (Unix.Unix_error "Illegal seek" sysconf "")

Raised by primitive operation at unknown location

我很确定这不是我的代码导致的异常,但类似于utop中发生的错误。

我有一个jbuild文件,如下所示:

(jbuild_version 1)

(executable
 ((name main)
  (libraries (my_library))))

(install
 ((section bin)
  (files ((main.exe as my_executable)))))

编辑:我尝试使用不同版本的opam和编译器,包括系统编译器(也是版本4.05.0)。似乎没什么用。每种组合都会产生与上述相同的错误。

0 个答案:

没有答案