ocaml-glpk (glpk bindings) and OASIS



前言:我是OCaml, OPAM和OASIS的新手。

tldr问题:我如何正确地设置一个在存储库中尚未可用的opam包(我不能只做opam install X)?详情如下:

我试图在OCaml项目中包含OCaml -glpk。我通过运行README中所述的makemake install来安装ocaml-glpk,并且给出的示例可以正确编译和运行。但是,我正在使用OASIS来生成项目的构建系统,我不确定如何设置它。我有相同的示例(在src文件夹中重命名为glpkExample.ml)和以下_oasis文件:

Executable "glpkExample"
  Path: src 
  MainIs: glpkExample.ml
  CompiledObject: best
  BuildDepends:
    glpk

运行oasis setup -setup-update dynamic后,我运行make,得到以下错误:

ocaml setup.ml -build 
Finished, 0 targets (0 cached) in 00:00:00.
+ /home/dimitrios/.opam/system/bin/ocamlfind ocamlopt -g -linkpkg -package glpk src/glpkExample.cmx -o src/glpkExample.native
File "_none_", line 1:
Error: Cannot find file /home/dimitrios/.opam/system/lib/glpk/glpk.cmxa
Command exited with code 2.
Compilation unsuccessful after building 4 targets (3 cached) in 00:00:00.
E: Failure("Command ''/usr/bin/ocamlbuild' src/glpkExample.native -tag debug' terminated with error code 10")
make: *** [build] Error 1

似乎glpk库缺少编译本机可执行文件所需的cmxa文件。我不知道如何解决这个问题。为了正确编译glpkExample.ml,我的Makefile包括/home/dimitrios/.opam/system/lib/glpk,还使用OCamlMakefile,这是非常长和复杂的。如果您能帮助我在OASIS中设置这个,或者如何让ocaml-glpk在OASIS中很好地工作,我将不胜感激。

谢谢!

这个网站不适合bug报告。你真的应该在这里报告。

临时解决方案是使用CompiledObject: byte以字节码进行编译。

如果您正在使用opam,那么最好与它一起安装应用程序,而不是手动安装。尝试清理您的系统并删除您安装的任何内容,然后执行:

$ eval `opam config env`
$ opam install ocaml-glpk

之后,如果glpk被正确地打包在opam中,它应该与您的设置一起工作,即,仅与oasisBuildDepends字段一起工作,而不是更多。

相关内容

  • 没有找到相关文章