4

我有一个使用函数time.ml中的 unix gettimeofday()获取当前时间的函数。该文件通过以下方式访问该函数:

open Unix; (*declared at the top of the file*)

let get_time ()  = Unix.gettimeofday ()

.mli文件中对应的条目是这样的:

val get_time : unit -> float

但是在编译它们时会抛出一个错误:

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

我已检查/lib/ocaml目录中是否存在以下文件:

unix.cmi, unix.a unix.cma unix.cmx unix.cmxa unix.cmxs unix.mli 

并且在.bashrc文件中正确设置了路径。

LD_LIBRARY_PATH=~/lib

尽管位于相同的/lib/ocaml目录中,但来自Printf模块的fprintf等其他功能也可以正常工作。

有什么想法可能是错的吗?我做错了什么还是我错过了什么?

4

2 回答 2

6

你必须像这样编译:

ocamlc unix.cma -c time.mli time.ml (* bytecode *)

或者

ocamlopt unix.cmxa -c time.mli time.ml  (* native code *)
于 2012-06-07T09:54:05.260 回答
4

如果您有正确配置的 findlib,

ocamlfind ocamlopt -package Unix -linkpkg time.ml

将为您省去选择 .cma 或 .cmxa 版本的麻烦。

于 2012-06-08T08:38:25.313 回答