Как скомпилировать файл, который использует модуль JsooTop?
У меня есть это в файле с именем 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 install js_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
Предупреждения от js_of_ocaml
исполняемым:
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
модуль?
1 ответ
Решение
Сначала убедитесь, что присутствуют необходимые пакеты 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
, Команды выше создадут файл JavaScript с именем main.js
,