安装mutualized服务器上的ocaml的驼峰库(installing an Ocaml hum

2019-09-22 07:29发布

我尝试使用OCaml的CSV库。 我下载的CSV-1.2.3 ,随后安装findlib后的安装说明:

  1. 解压缩源存档并转到包的根,
  2. 运行 'ocaml的setup.ml -configure',
  3. 运行 'ocaml的setup.ml -build',
  4. 运行 'ocaml的setup.ml -install'

现在我有METAcsv.acsv.cmacsv.cmicsv.cmxcsv.cmxacsv.mli文件在~/opt/lib/ocaml/site-lib/csv剧目。 shell命令ocamlfind list -describecsv A pure OCaml library to read and write CSV files. (version: 1.2.3) csv A pure OCaml library to read and write CSV files. (version: 1.2.3)我相信意味着CSV是正确安装。

但是当我添加

  let data = Csv.load "foo.csv" in

在我compute.ml模块,并尝试在更大的程序包我的编译错误中编译:

File "_none_", line 1, characters 0-1:
Error: No implementations provided for the following modules:
         Csv referenced from compute.cmx"

如果我只需键入

let data = load "foo.csv" in

我得到:

File "compute.ml", line 74, characters 13-17:
Error: Unbound value load

我有相同的类型,当我使用错误Csv.loadload直接在ocaml的终端。 会有人有什么是错在我的代码或库安装的想法?

Answer 1:

我的猜测是,你正在使用ocamlfind编译( ocamlfind ocamlc -package csv ... ),因为你有一个链接错误,而不是一个类型检查一个(如果你没有在所有的地方指定这将是这种情况csv是)。 该解决方案可以是,在这种情况下,为增加-linkall选项最后汇编生产线的可执行文件,要求它链接csv.cmx它。 否则,请尽量使用ocamlfind是的,告诉我们您的编译命令是什么。

对于顶层,这是非常容易使用ocamlfind从它。 关注这个顶层互动:

% ocaml
        Objective Caml version 3.12.1

# #use "topfind";;
- : unit = ()
Findlib has been successfully loaded. Additional directives:
  #require "package";;      to load a package
  #list;;                   to list the available packages
  #camlp4o;;                to load camlp4 (standard syntax)
  #camlp4r;;                to load camlp4 (revised syntax)
  #predicates "p,q,...";;   to set these predicates
  Topfind.reset();;         to force that packages will be reloaded
  #thread;;                 to enable threads

- : unit = ()
# #require "csv";;
/usr/lib/ocaml/csv: added to search path
/usr/lib/ocaml/csv/csv.cma: loaded
# Csv.load;;
- : ?separator:char -> ?excel_tricks:bool -> string -> Csv.t = <fun>

要明确。 我在顶层键入曾经是:

#use "topfind";;
#require "csv";;
Csv.load;; (* or anything else that uses Csv *)


文章来源: installing an Ocaml hump library on mutualized server