简体   繁体   中英

using Unix functions in OCaml source

I have a function to get the current time using the unix gettimeofday() in function time.ml . The file accesses the function in the following way:

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

let get_time ()  = Unix.gettimeofday ()

The corresponding entry in .mli file is like this:

val get_time : unit -> float

But during compiling them throws an error:

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

I have checked that the following files are present in /lib/ocaml directory:

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

and the path is set correctly set to in .bashrc file.

LD_LIBRARY_PATH=~/lib

Other functions like fprintf from Printf module work correctly inspite of being in the same /lib/ocaml directory.

Any ideas what could be wrong? Am I doing something wrong or am I missing something?

You have to compile like this:

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

or

ocamlopt unix.cmxa -c time.mli time.ml  (* native code *)

If you have a properly configured findlib,

ocamlfind ocamlopt -package Unix -linkpkg time.ml

will save you the trouble of picking the .cma or the .cmxa version.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM