无法在 OCaml 中加载 LLVM 绑定



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

我正在运行 Ubuntu 16.04 LTS,其中包含从官方 LLVM apt 存储库安装的所有必需的 LLVM deb 包和从 OPAM 安装的"llvm"OCaml 包。

显然,与LLVM的OCaml绑定在顶级中不起作用。免责声明,我没有自己尝试过,我只是在阅读安装脚本。安装脚本包含以下三行:

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

这意味着,共享库未安装,因此无法将 llvm 库动态加载到顶层。

我真的不知道这是问题还是限制,您可以尝试联系维护者,并寻求帮助/澄清。使用opam show llvm | grep author命令获取他的邮件地址。

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

opam install llvm.3.8

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

最新更新