簡體   English   中英

Ocaml 找不到 Unix 模塊

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM