从 Vim 调用 OCaml:无法加载共享库 dllbin_prot_stubs

Call OCaml from Vim: cannot load shared library dllbin_prot_stubs

我有一个要从 Vim 调用的 OCaml 程序。

在我的 .vimrc 中,我定义了一个应该执行 OCaml 字节码的命令:

command! MyCommand call FunctionCallingOCaml()
function! FunctionCallingOCaml()
  let scriptPath = $HOME . "/path/to/myOCamlProgram.byte"
  let ocamlCmd = "ocamlrun " . scriptPath
  execute "!" . ocamlCmd
endfunction

不幸的是,这不起作用;我收到一条错误消息:

Fatal error: cannot load shared library dllbin_prot_stubs Reason: dllbin_prot_stubs.so: cannot open shared object file: No such file or directory

我可以从另一个终端顺利执行 myOCamlProgram.byte 运行 bash.

此外,我可以使用 execute 毫无问题地调用 shell 等 ls 等内置函数和 Vim 等 grep 的程序。


我的系统:

uname -a:

Linux marathon 4.12.10-1-ARCH #1 SMP PREEMPT Wed Aug 30 12:18:42 CEST 2017 x86_64 GNU/Linux

opam --version: 1.2.2

VIM - Vi IMproved 8.0(2016 年 9 月 12 日,2017 年 9 月 19 日编译13:59:47)

事实证明,OPAM 在 shell 运行ning Vim 中没有正确初始化。 PATH 不包含导致错误的 OCaml 二进制文件。

作为修复,我调用了 eval $(opam config env) 来设置环境变量并修改 PATH 所以我的 Linux 安装将 运行 来自 Vim 的 OCaml 程序:

let ocamlCmd = "eval $(opam config env) && ocamlrun " . scriptPath
execute "!" . ocamlCmd

更好的是,将此添加到您的 .bash_profile,这样您每次登录时都会针对 OPAM 初始化您的 shell:

. /home/mb/.opam/opam-init/init.sh

shell脚本sources之前的点。