我可以使用以下ocaml模块test.ml
并使用ocamlopt
(* test.ml *)
Printf.printf "hi\n"
通过
$ ocamlopt -o test.native test.ml
$ ./test.native
hi
我也可以在没有链接的情况下编译它。
$ ocamlopt -o test.o -c test.ml
$ ls
test.cmi test.cmx test.ml test.o
但是,如果我尝试将刚刚创建的对象与OCaml运行时链接以获取可执行文件,则不会创建任何文件(即使ocamlopt
正常退出)
$ ocamlopt -o test.native test.o
$ ls
test.cmi test.cmx test.ml test.o
如何指示ocamlopt
链接到OCaml运行时并生成可执行文件"就像"我跑了ocamlopt -o test.native test.ml
?
答案 0 :(得分:3)
您需要将.cmx
文件提供给编译器,而不是.o
文件。
$ ocamlopt -o test.native test.cmx
$ ./test.native
hi