无法在ocaml打开llvm

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (184)

我试图在ocaml中使用llvm绑定,在我的文件test.ml中,我有一行代码:

open Llvm

当我运行命令

ocamlbuild -use-ocamlfind test.byte -package llvm

我得到这个结果:

+ ocamlfind ocamldep -package llvm -modules test.ml > test.ml.depends
ocamlfind: Package `llvm' not found
Command exited with code 2.
Compilation unsuccessful after building 1 target (0 cached) in  00:00:00.

顺便说一句,_tag文件包含:

"src": traverse
<src/{lexer,parser}.ml>: use_camlp4, pp(camlp4of)
<*.{byte,native}>: g++, use_llvm, use_llvm_analysis

myocamlbuild.ml包含:

open Ocamlbuild_plugin;;
ocaml_lib ~extern:true "llvm";;
ocaml_lib ~extern:true "llvm_analysis";;
flag ["link"; "ocaml"; "g++"] (S[A"-cc"; A"g++"]);;
提问于
用户回答回答于

我不知道为什么你使用的指令非常复杂。如果已经通过opam安装了这些绑定,则不必在OCaml中使用llvm绑定。

这是配方:

通过opam安装llvm绑定。

它可以如此简单

opam install llvm

但是,opa​​m可能会尝试安装系统上未提供的最新版本,因此请选择一个特定版本,并执行以下操作(假设有llvm-3.8):

opam install conf-llvm.3.8
opam install llvm --criteria=-changed

(该-criteria标志将阻止opam将conf-llvm升级到最新版本)

一旦成功,可以轻松编译您的程序,而无需任何额外的脚手架。

创建和建立你的项目

  1. 创建一个新的新文件夹,例如, mkdir llvm-project cd llvm-project
  2. 创建一个示例应用程序(借鉴一些教程,我已经在网上找到): cat >test.ml<<EOF open Llvm let _ = let llctx = Llvm.global_context () in let llmem = Llvm.MemoryBuffer.of_file Sys.argv.(1) in let llm = Llvm_bitreader.parse_bitcode llctx llmem in Llvm.dump_module llm ; () EOF
  3. 编译为字节码 ocamlbuild -pkgs llvm,llvm.bitreader test.byte 或本地代码 ocamlbuild -pkgs llvm,llvm.bitreader test.native
  4. 运行 ./test.native mycode.bc

所属标签

可能回答问题的人

  • gulu丶咕噜

    0 粉丝1 提问5 回答
  • EatRice

    16 粉丝0 提问4 回答
  • 华讯云

    0 粉丝0 提问4 回答
  • 卓脑域名

    0 粉丝0 提问3 回答

扫码关注云+社区

领取腾讯云代金券