[英]Ocaml can't find Unix module
我使用以下步驟(重新)在 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'
事實上,我在重新安裝之前遇到了這個錯誤; 這就是我首先重新安裝的原因。 但問題仍然存在,我不知道如何解決它。
默認情況下不鏈接unix
庫,因此您需要傳遞一些鏈接標志以使其工作,例如,
ocamlc unix.cma fork.ml -o fork
如果您不想了解有關cma
任何信息,可以使用ocamlbuild
代替 ocamlc:
ocamlbuild -lib unix fork.native
或者更一般
ocamlbuild -pkg unix fork.native
后者(帶有pkg
選項)將是首選方式,因為它允許您指定任何使用opam
安裝的opam
。 例如,如果您曾經嘗試使用lwt
,則可以將其鏈接到
ocamlbuild -pkg lwt fork.native
對於那些在使用 OCaml 交互式頂層時遇到此錯誤的人,命令行語法類似於ocamlc
所需的ocamlc
:
ocaml unix.cma
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.