从Vim调用OCaml:无法加载共享库dllbin\u prot\u存根
我有一个OCaml程序,我想从Vim调用它 在my从Vim调用OCaml:无法加载共享库dllbin\u prot\u存根,vim,ocaml,opam,Vim,Ocaml,Opam,我有一个OCaml程序,我想从Vim调用它 在my.vimrc中,我定义了一个命令,该命令应执行OCaml字节码: command! MyCommand call FunctionCallingOCaml() function! FunctionCallingOCaml() let scriptPath = $HOME . "/path/to/myOCamlProgram.byte" let ocamlCmd = "ocamlrun " . scriptPath execute "!
.vimrc
中,我定义了一个命令,该命令应执行OCaml字节码:
command! MyCommand call FunctionCallingOCaml()
function! FunctionCallingOCaml()
let scriptPath = $HOME . "/path/to/myOCamlProgram.byte"
let ocamlCmd = "ocamlrun " . scriptPath
execute "!" . ocamlCmd
endfunction
不幸的是,这不起作用;我收到一条错误消息:
致命错误:无法加载共享库dllbin\u prot\u存根
原因:dllbin_prot_stubs.so:无法打开共享对象文件:没有此类文件或目录
我可以在运行bash的另一个终端上顺利地执行program.byte
此外,我可以使用execute
从Vim调用shell内置程序,如ls
和grep
,而不会出现问题
我的系统:
uname-a
:
Linux marathon 4.12.10-1-ARCH#1 SMP抢先周三8月30日12:18:42 CEST 2017 x86_64 GNU/Linux
opam--版本
:1.2.2
VIM-Vi改进了8.0(2016年9月12日,2017年9月19日编译13:59:47)结果表明,在运行VIM的shell中,OPAM没有正确初始化。 路径不包括导致错误的OCaml二进制文件 作为修复,我调用
eval$(opam config env)
设置环境变量并修改路径,以便我的Linux安装将从Vim运行OCaml程序:
let ocamlCmd = "eval $(opam config env) && ocamlrun " . scriptPath
execute "!" . ocamlCmd
更好的方法是,将此添加到您的.bash\u配置文件中,以便您每次登录时都会根据OPAM对shell进行初始化:
. /home/mb/.opam/opam-init/init.sh
shell脚本前面的点将显示它