我(重新)使用以下步骤在OS X上安装了Ocaml:
> brew uninstall ocaml
> brew uninstall opam
> brew install ocaml
> brew install opam
> opam init
> eval `opam config env`
> opam switch 4.02.1
> opam install batteries core
然后我尝试编译这个程序:
open Unix
open Printf
let main () =
match fork () with
| 0 -> printf "child\n"
| pid -> printf "parent\n"
let _ = main ()
我使用这个命令编译:
ocamlc -o fork fork.ml
但是我收到了一个错误:
File "fork.ml", line 1:
Error: Error while linking fork.cmo:
Reference to undefined global `Unix'
事实上,我在重新安装之前遇到了这个错误;这就是我首先重新安装的原因。但问题仍然存在,我不知道如何解决它。
答案 0 :(得分:6)
unix
库默认情况下没有链接,因此您需要传递一些链接标记,以使其正常工作,例如,
ocamlc unix.cma fork.ml -o fork
如果您不想了解cma
的任何信息,可以使用ocamlbuild
代替ocamlc:
ocamlbuild -lib unix fork.native
甚至更一般
ocamlbuild -pkg unix fork.native
后者(使用pkg
选项)将是首选方式,因为它允许您指定使用opam
安装的任何包。例如,如果你试图使用lwt
,你可以用
ocamlbuild -pkg lwt fork.native
答案 1 :(得分:0)
对于那些在使用OCaml交互式顶层时遇到此错误的人,命令行语法类似于ocamlc
所要求的语法:
ocaml unix.cma