Z3的OCaml绑定:在OCaml解释器中成功,但在OCaml编译器中失败

Z3的OCaml绑定:在OCaml解释器中成功,但在OCaml编译器中失败,ocaml,z3,Ocaml,Z3,我在OCaml解释器和OCaml编译器之间遇到了一些问题。有人能帮我吗?非常感谢你 我刚刚成功地编译了Z3的OCaml绑定,下面是中的说明。他们使用旧的Z3版本:4.1 首先,我更改文件Makefile.ocaml: # Findlib package installation obtion, for instance -destdir /usr/lib/ocaml OCAMLFIND_INSTALL_FLAGS = -destdir /home/maidinh/.opam/4.01.0/lib

我在OCaml解释器和OCaml编译器之间遇到了一些问题。有人能帮我吗?非常感谢你

我刚刚成功地编译了Z3的OCaml绑定,下面是中的说明。他们使用旧的Z3版本:4.1

首先,我更改文件Makefile.ocaml:

# Findlib package installation obtion, for instance -destdir /usr/lib/ocaml
OCAMLFIND_INSTALL_FLAGS = -destdir /home/maidinh/.opam/4.01.0/lib/
然后,我编译它:

sudo apt-get install camlidl
sudo make
sudo make install
我不知道为什么在没有“sudo”许可的情况下运行“make”时失败:

  • 运行“sudo make”时的终端日志:
  • 当我只运行“make”时,日志显示“ld:cannotfind-lcamlidl”(有人能向我解释这个问题吗?)
最后,我通过运行OCaml解释器4.01.0来测试Z3的OCaml绑定:

./ocaml
#use "topfind";;
#require "z3";;
open Z3;;
Z3.mk_context;;
- : (string * string) list -> Z3.context = <fun>
然后,我编译并运行:

ocamlfind ocamlc -linkpkg -package z3 -c main.ml -o main.cmo
ocamlfind ocamlc -linkpkg -package z3 -o main  main.cmo
./main
Start
Error: internal error

谁能向我解释一下这个错误吗?非常感谢你

简而言之,Z34.1的ML绑定是有缺陷的。我在z3安装程序的存储库中将其恢复为4.0。汇编:

ocamlfind remove z3
opam安装凸轮轴
git克隆https://github.com/polazarus/z3-installer.git #全新安装
cd z3安装程序
制作
sudomakelib安装
让ocaml安装
请注意,API略有不同,您的示例应为:

让u=打印u结束行“开始”
让Z3.mk_context_x[| |]进入
()

要安装和编译带有ML绑定的新Z3,您应该看看。他解释了如何编译Z3。

OCaml,而不是OCaml。求你了,我很抱歉。谢谢你纠正我。你有没有试过最新Z3()附带的新绑定,而不是这个旧脚本(我可以说是我写的)?在我看来,你也应该尝试用opam安装camlidl,而不是做任何事情。是的,我在Z3.codeplex.com上用最新的Z3进行了尝试,但编译失败。我已经安装了camlidl。你能帮我吗?非常感谢!我已经试过德鲁普的Z3叠加,但我不知道如何使用它。我遵循他的手册:下载Z3官方源代码(master和MLNG分支),然后成功运行make。但是我不知道如何使用他的代码,我应该把他的代码复制到某个地方吗?覆盖是什么意思?啊,你是说你刚刚用Z34.0更新了你的项目吗?好的,我试试看。谢谢对该脚本是为Z3的旧OCAMLAPI设计的。因此,它只能追溯到过去:/I我没有彻底了解新的API,但乍一看,界面和构建过程都发生了很大的变化。如果有一天我有时间。。。但在此期间,这应该是工作,但不会享受许多改善Z3自那时以来所做的。谢谢!你能告诉我更多关于Drup的Z3覆盖层吗?无论如何我都试过了,但都失败了。不,我没有试过。你应该试着直接联系德鲁普。
ocamlfind ocamlc -linkpkg -package z3 -c main.ml -o main.cmo
ocamlfind ocamlc -linkpkg -package z3 -o main  main.cmo
./main
Start
Error: internal error