使用 Objective Caml 编译器 v3.11.2 编译 hevea-2.19

使用 Objective Caml 编译器 v3.11.2 编译 hevea-2.19

Hevea 是一个 LaTeX 到 HTML 的转换器,可从以下网址获得:http://pauillac.inria.fr/~maranget/hevea/index.html

我正在尝试(但失败了)在 CentOS 机器上编译 hevea,但 yum 存储库似乎没有该机器的软件包。我已安装打包的 Objective Caml 编译器,如下所示:

$ uname -a
Linux ppserver 2.6.32-431.29.2.el6.x86_64 #1 SMP Tue Sep 9 21:36:05
UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
$ sudo yum install ocaml
...
$ /usr/bin/ocamlc.opt -v
The Objective Caml compiler, version 3.11.2
Standard library directory: /usr/lib64/ocaml

尝试编译 hevea 得到结果:

$ wget http://pauillac.inria.fr/~maranget/hevea/distri/hevea-2.19.tar.gz
$ tar -zxvf hevea-2.19.tar.gz
$ cd hevea-2.19
[hevea-2.19]$ make
sh ocb.sh opt
/usr/bin/ocamldep.opt -modules hevea.ml > hevea.ml.depends
/usr/bin/ocamldep.opt -modules auxx.mli > auxx.mli.depends
...
/usr/bin/ocamlc.opt -c -w +a-4-9-41-45 -annot -o videoc.cmi videoc.mli
/usr/bin/ocamlc.opt -c -w +a-4-9-41-45 -annot -o zyva.cmi zyva.mli
+ /usr/bin/ocamlc.opt -c -w +a-4-9-41-45 -annot -o infoRef.cmo infoRef.ml
File "infoRef.mll", line 127, characters 2-12:
Error: Unbound value String.map
Command exited with code 2.
make: *** [ocb-opt] Error 10

这是触发错误的代码,

let verifie name =
  String.map
    (fun c -> match c  with
    | '\t'
    | ','
    | '\n' -> ' '
    | '.' -> '-'
    |  _ -> c)
    name
;;

我猜 Objective Caml 编译器中有些东西发生了变化,橡胶树代码需要稍微更新一下?我已经给 Luc Maranget 发了电子邮件,并将在这里发布任何回复 [见下文]。

答案1

来自 Luc Maranget 的电子邮件回复,

你只需要一个比 3.11.2 更新的 ocaml 编译器,最好是当前版本...String.map 是在 OCaml 4.00.0 中引入的

无论如何,我建议您将 OCaml 安装升级到当前版本。您的 Linux 发行版提供的 ocaml 已过时,因为 OCaml 3.11.2 于 2010 年 1 月发布。安装 OCaml 的一种方便方法是使用 opamhttp://opam.ocamlpro.com/

希望这个问答将来能够对其他人有所帮助。

相关内容