使用 OCaml 在 OSX 上使用 Z3

Using Z3 on OSX with OCaml

我正在尝试使用 OCaml 绑定在 OSX 上使用 Z3 Solver。 尝试使用 运行 构建我的解决方案时 ocamlfind ocamlc -o testsat.byte -package Z3 -linkpkg testsat.ml 我收到 ocamlfind: Package Z3 not found

我也尝试过使用不带 -package 标签的 ocamlbuild,但是我收到 Unbound Module Z3 错误。

我在安装 z3Overlay 库时也遇到了问题 - https://github.com/termite-analyser/z3overlay 在尝试安装 z3 dev 部分时。

有谁知道可以在 OSX 上使用的任何修复程序或稳定版本?我的假设是,由于构建失败,我遇到了这些错误(从官方文档可以看出:https://github.com/Z3Prover/z3)。

我是新手,非常感谢任何帮助。

库和包名称区分大小写,z3 绑定的包名称是 z3 而不是 Z3。您始终可以使用 ocamlfind list 查询可用包。

ocamlfind list | grep -i Z3
z3                  (version: 4.6.0.0)

因此以下命令将按预期工作

ocamlfind ocamlc -o testsat.byte -package z3 -linkpkg testsat.ml

Martin 在评论中提到了一个小警告,因此您应该会收到另一个错误,应该如下所示:

libz3.so: cannot open shared object file: No such file or directory

事实上,软件包安装 libz3.so 在一个没有搜索到的位置,因此您应该告诉系统链接器在哪里搜索 z3 共享对象。在 Mac OS X 中,这可以通过设置 DYLD_LIBRARY_PATH 变量来实现,例如,

export DYLD_LIBRARY_PATH=`opam config var z3:lib`

在 GNU/Linux 系统上可以通过 LD_LIBRARY_PATH 环境变量完成相同的操作:

export LD_LIBRARY_PATH=`opam config var z3:lib`