无法在 OCaml 中加载 LLVM 绑定

Can't load LLVM bindings in OCaml

当我在 OCaml REPL 中 #require "llvm";; 时,我得到: Reason: dllllvm.so: dllllvm.so: cannot open shared object file: No such file or directory.

我是 运行 Ubuntu 16.04 LTS,所有必需的 LLVM deb 包都是从官方 LLVM apt repo 安装的,"llvm" OCaml 包是从 OPAM 安装的。

显然,OCaml 绑定到 LLVM 在顶层不起作用。免责声明,我没有自己尝试,我只是阅读安装脚本。安装脚本包含以下three lines:

cp "${libdir}"/llvm/*.a 
mv "${libdir}"/llvm/*.cma 
mv "${libdir}"/llvm/*.cmxa 

也就是说,没有安装共享库,因此无法将llvm库动态加载到顶层。

不知道是问题还是限制,你可以尝试联系维护者,索取help/clarification。使用 opam show llvm | grep author 命令,获取他的邮件地址。

看来,3.8 版本没有这个问题,所以你可以尝试安装这个版本(它在 Xenial 上可用),并从 opam 安装绑定:

opam install llvm.3.8

您的另一种解决方案是构建自定义 OCaml 顶层。可能,最简单的方法是为此使用 ocamlbuild。