llvm OCaml bindings

2019-03-22 14:51发布

问题:

I'm working on llvm OCaml bindings.

I installed llvm package through opam (opam install llvm), when I use llvm in utop, I get the following error:

#require "llvm";;
Error: The external function 'llvm_global_succ' is not available. 

The opam llvm version is 3.2.

I also tried building llvm3.3 from the official site (./configure --with-ocaml-libdir='ocamlc -where'), the build was successful (all the llvm command-line tools are working), but I got the same error in utop.

I'm on Mac OS 10.7.5.


Edit: I solved it..

ocamlmktop -o llvmtop llvm.cma -cc g++

Then launch llvmtop, you can use llvm bindings after open Llvm.

I haven't found an equivalent for utop yet..


Edit2: Now utop is working!

Thanks to the utop documentation here

  1. create a myutop_main.ml file:

    let () = UTop_main.main ()

  2. create a custom utop with llvm bindings:

    ocamlfind ocamlmktop -o llvmutop -thread -linkpkg -package utop -package llvm myutop_main.ml -cc g++

回答1:

(as I'm asked to answer my own question...)

To use system toplevel

ocamlmktop -o llvmtop llvm.cma -cc g++

Then launch llvmtop, you can use llvm bindings after open Llvm.

I haven't found an equivalent for utop yet..


To use utop

Thanks to the utop documentation here

  1. create a myutop_main.ml file:

    let () = UTop_main.main ()

  2. create a custom utop with llvm bindings:

    ocamlfind ocamlmktop -o llvmutop -thread -linkpkg -package utop -package llvm myutop_main.ml -cc g++



标签: ocaml llvm opam