Ocaml 如何编译使用JsooTop模块的文件?
我在一个名为Ocaml 如何编译使用JsooTop模块的文件?,ocaml,ocamlfind,js-of-ocaml,Ocaml,Ocamlfind,Js Of Ocaml,我在一个名为main.ml的文件中有这个: let () = JsooTop.initialize () 我尝试使用以下方法编译该文件: ocamlfind ocamlc -package js_of_ocaml -linkpkg -o main.byte main.ml 但这个错误出现了: File "main.ml", line 1, characters 9-27: Error: Unbound module JsooTop 我的计算机上似乎不存在JsooTop,因此我运行了opam
main.ml的文件中有这个:
let () = JsooTop.initialize ()
我尝试使用以下方法编译该文件:
ocamlfind ocamlc -package js_of_ocaml -linkpkg -o main.byte main.ml
但这个错误出现了:
File "main.ml", line 1, characters 9-27:
Error: Unbound module JsooTop
我的计算机上似乎不存在JsooTop
,因此我运行了opam安装js\u of_ocaml-toplevel
,并尝试使用以下方法再次编译该文件:
ocamlfind ocamlc -package js_of_ocaml -package js_of_ocaml-toplevel -linkpkg -o main.byte main.ml
js_of_ocaml main.byte
但我得到警告:
来自ocamlfind
的警告:
findlib: [WARNING] Interface topdirs.cmi occurs in several directories: /usr/lib/ocaml, /usr/lib/ocaml/compiler-libs
来自ocaml可执行文件的js\u的警告:
There are some missing primitives
Dummy implementations (raising 'Failure' exception) will be used if they are not available at runtime.
You can prevent the generation of dummy implementations with the commandline option '--disable genprim'
Missing primitives provided by +dynlink.js:
caml_add_debug_info
caml_dynlink_add_primitive
caml_dynlink_get_current_libs
caml_dynlink_lookup_symbol
caml_dynlink_open_lib
caml_remove_debug_info
Missing primitives provided by +toplevel.js:
caml_get_current_environment
caml_get_section_table
caml_invoke_traced_function
caml_realloc_global
caml_reify_bytecode
caml_static_alloc
caml_static_free
caml_static_release_bytecode
caml_terminfo_setup
我的问题是:编译使用JsooTop
模块的文件的正确方法是什么?首先,确保存在所需的OPAM包:
opam install js_of_ocaml js_of_ocaml-toplevel
要构建使用JsooTop
模块的程序,请按以下方式编译文件:
ocamlfind ocamlc -package js_of_ocaml -package js_of_ocaml-toplevel -linkpkg -o main.byte main.ml
js_of_ocaml --toplevel --dynlink +dynlink.js +toplevel.js main.byte
注意包含了--toplevel
,--dynlink
,+dynlink.js
和+toplevel.js
。上面的命令将生成一个名为main.js
的JavaScript文件