安装Ocaml电池时出现未绑定模块Findlib错误

时间:2012-09-26 21:02:41

标签: debian ocaml ocaml-batteries

我已创建我的~/.ocamlinit,如下所示

let interactive = !Sys.interactive;;
Sys.interactive := false;; (*Pretend to be in non-interactive mode*)
#use "topfind";;
Sys.interactive := interactive;; (*Return to regular interactive mode*)

Toploop.use_silently Format.err_formatter (Filename.concat (Findlib.package_directory "batteries") "battop.ml");;

当我在命令行输入ocaml时,出现以下错误:

$ ocaml
        Objective Caml version 3.12.1

Cannot find file topfind.
File ".ocamlinit", line 6, characters 60-85:
Error: Unbound module Findlib
# 

导致此问题的原因是什么?我应该如何解决此问题?

(我在Debian Wheezy)

编辑:我为ocaml设置了别名:

alias ocaml='rlwrap -H /home/nanda/.ocaml_history -D 2 -i -s 10000 ocaml'

1 个答案:

答案 0 :(得分:2)

感谢dkim,我会发布适合我的解决方案。希望这有助于其他人。

Ocaml电池安装过程

为了能够使用包含ocaml-batteries的电池,我遵循了这个过程:

sudo apt-get install ocaml ocaml-batteries-included ocaml-doc ledit rlwrap
需要

rlwrapledit为OCaml toploop添加readline支持。

.bashrc中添加了一个别名,用于保存在ocaml toploop中输入的命令。

 alias ocaml='rlwrap -H /home/nanda/.ocaml_history -D 2 -i -s 10000 ocaml'

-H指定历史文件名
-D忽略重复
-i不区分大小写 -s限制存储在此文件中的命令数

如评论中所述,我在尝试调用ocaml解释器时收到此错误。

$ ocaml
        Objective Caml version 3.12.1

Cannot find file topfind.
File ".ocamlinit", line 6, characters 60-85:
Error: Unbound module Findlib
# 

我收到此错误是因为未正确安装ocaml-findlib软件包。我已经通过安装libfindlib-ocaml-dev包来解决这个问题:

sudo apt-get install libfindlib-ocaml-dev

对于某些人来说,如上所述here

从源代码安装findlib包时,问题就解决了

一些更有帮助的链接:

  1. http://mirror.ocamlcore.org/wiki.cocan.org/tips_for_using_the_ocaml_toplevel.html
  2. http://projects.camlcity.org/projects/dl/findlib-1.2.1/doc/guide-html/quickstart.html
  3. http://www.donadeo.net/post/2010/installing-batteries