无法在 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。
当我在 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。