ocaml上的Z3绑定

ocaml上的Z3绑定,ocaml,z3,opam,sat-solvers,oasis,Ocaml,Z3,Opam,Sat Solvers,Oasis,我目前正在使用OCAML4.06.0,并尝试使用Z3SAT解算器。我正在使用opam的oasis来编译文件,这些文件正在成功地构建一切。但是,当我运行生成的本机代码时,会出现以下错误:加载共享库时出错:libz3.so。我尝试重新安装z3软件包,但错误仍然存在。有人能帮我解决这个问题吗,因为我不知道还有什么可以尝试吗?以下是我刚才在Ubuntu 18.04.1下安装z3时所做的: $ opam depext conf-gmp.1 $ opam depext conf-m4.1 这些设备安装在o

我目前正在使用OCAML4.06.0,并尝试使用Z3SAT解算器。我正在使用opam的oasis来编译文件,这些文件正在成功地构建一切。但是,当我运行生成的本机代码时,会出现以下错误:加载共享库时出错:libz3.so。我尝试重新安装z3软件包,但错误仍然存在。有人能帮我解决这个问题吗,因为我不知道还有什么可以尝试吗?

以下是我刚才在Ubuntu 18.04.1下安装z3时所做的:

$ opam depext conf-gmp.1
$ opam depext conf-m4.1
这些设备安装在opam外部的gmp和m4。非常令人印象深刻

$ opam install z3
现在安装了z3库,您可以从OCaml代码中使用它。但我找不到安装的可执行文件

$ export LD_LIBRARY_PATH=~/.opam/4.06.0/lib/z3
$ ocaml -I ~/.opam/4.06.0/lib/z3
        OCaml version 4.06.0

# #load "nums.cma";;
# #load "z3ml.cma";;
# let ctx = Z3.mk_context [];;
val ctx : Z3.context = <abstr>
它是有效的,也就是说,它说,通过使x为真,可以满足平凡的公式x

注意:最初我认为这里不需要设置LD_LIBRARY_PATH。但在后来的测试中,我发现这是必要的。所以这可能是你问题的关键

为运行程序设置LD_LIBRARY_路径有点麻烦,而且容易出错。它对于个人测试来说已经足够好了,但对于任何一种更广泛的部署来说可能都不行。有几种方法可以在链接时设置共享库的搜索路径


我希望这能有所帮助。

以下是我刚才在Ubuntu 18.04.1下安装z3的步骤:

$ opam depext conf-gmp.1
$ opam depext conf-m4.1
这些设备安装在opam外部的gmp和m4。非常令人印象深刻

$ opam install z3
现在安装了z3库,您可以从OCaml代码中使用它。但我找不到安装的可执行文件

$ export LD_LIBRARY_PATH=~/.opam/4.06.0/lib/z3
$ ocaml -I ~/.opam/4.06.0/lib/z3
        OCaml version 4.06.0

# #load "nums.cma";;
# #load "z3ml.cma";;
# let ctx = Z3.mk_context [];;
val ctx : Z3.context = <abstr>
它是有效的,也就是说,它说,通过使x为真,可以满足平凡的公式x

注意:最初我认为这里不需要设置LD_LIBRARY_PATH。但在后来的测试中,我发现这是必要的。所以这可能是你问题的关键

为运行程序设置LD_LIBRARY_路径有点麻烦,而且容易出错。它对于个人测试来说已经足够好了,但对于任何一种更广泛的部署来说可能都不行。有几种方法可以在链接时设置共享库的搜索路径


我希望这有帮助。

您使用的是什么系统?Linux?苹果操作系统?窗户?请显示您正在运行的确切命令和错误输出。仅此而已吗?它是否也会说:无法打开共享对象文件:没有这样的文件或目录?@JeffreyScofield我在Windows子系统上使用Linux。我先运行make,然后只运行本机代码。@LeventErkok完整的错误消息是./main.native:加载共享库时出错:libz3.so:无法打开共享对象文件:没有这样的文件或目录。我怀疑您的安装有什么问题。跟随@JeffreyScofield的建议可能是你最好的选择,因为他似乎已经完成了一个干净的安装。你使用的是什么系统?Linux?苹果操作系统?窗户?请显示您正在运行的确切命令和错误输出。仅此而已吗?它是否也会说:无法打开共享对象文件:没有这样的文件或目录?@JeffreyScofield我在Windows子系统上使用Linux。我先运行make,然后只运行本机代码。@LeventErkok完整的错误消息是./main.native:加载共享库时出错:libz3.so:无法打开共享对象文件:没有这样的文件或目录。我怀疑您的安装有什么问题。跟随@JeffreyScofield的建议可能是你最好的选择,因为他似乎已经完成了一次干净的安装。