我刚刚安装了一个名为Ppl
的软件包,这是find -name "*ppl.*"
下/usr/
的结果:
./lib/libppl.so.7.1.0
./lib/libppl.so.7
./lib/libcloog-ppl.so.0
./local/share/man/man3/libppl.3
./local/share/aclocal/ppl.m4
./local/include/ppl.hh
./local/lib/libppl.so
./local/lib/libppl.la
./local/lib/libppl.a
./local/lib/libppl.so.9
./local/lib/libppl.so.9.0.0
但是,当我按ocamlc -I /usr/local/lib/ocaml/3.11.2/apron -I /usr/local/lib/ocaml/3.11.2/gmp/ -I /usr/local/lib/ -c file.ml
运行以下代码时,出现错误Unbound value Ppl.manager_alloc_strict
。
open Apron;;
open Mpqf;;
open Format;;
let print_array = Abstract0.print_array;;
let lincons1_array_print fmt x =
Lincons1.array_print fmt x
;;
let generator1_array_print fmt x =
Generator1.array_print fmt x
;;
let manpk = Polka.manager_alloc_strict();;
let manbox = Box.manager_alloc ();;
let manoct = Oct.manager_alloc ();;
let manppl = Ppl.manager_alloc_strict();;
...
有谁知道发生了什么?非常感谢你!
答案 0 :(得分:1)
您已经向我们展示了库,但没有关于库的OCaml接口的任何内容 - 用于本机编译的cmx或cmxa。就像comment I left prior一样,对OCaml的Ppl包的位置做同样的事情。 OCaml不直接与C库(.a,.so)连接,而是通过编译接口(cmxa或cmi文件)连接。
您也可以考虑使用ocamlbuild系统。您可以使用外部依赖项标记模块,并让构建系统找到包(通过ocamlfind或硬编码)。