当我尝试打电话#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 init
,opam switch set 4.05.0
并重新安装core
and utop
,但此错误仍然存在。是否有可能我还需要重新安装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 版)。似乎没有任何效果。每个组合都会产生与上述相同的错误。