【问题标题】:ocaml unable to find llvm moduleocaml 找不到 llvm 模块
【发布时间】:2014-01-03 02:21:38
【问题描述】:

我用opam install llvm 安装了 llvm 模块,并检查了库是否正确创建。但是,当我尝试使用它时,我得到了Error: Unbound module Llvm 错误。

a@prosseek Chapter3> ocaml llvm.cma
Cannot find file llvm.cma. 

可能出了什么问题?

编辑1

这是我在命令行中执行命令得到的结果。

a@prosseek Chapter4> eval `opam config env`
a@prosseek Chapter4> opam install llvm
[NOTE] Package llvm is already installed (current version is 3.2).
a@prosseek Chapter4> ocaml
        OCaml version 4.01.0

# #require "llvm";;
Unknown directive `require'.
# open Llvm;;
Error: Unbound module Llvm

来自http://projects.camlcity.org/projects/dl/findlib-1.3.1/doc/guide-html/quickstart.html。

# #use "topfind";;
- : unit = ()
Findlib has been successfully loaded. Additional directives:
  #require "package";;      to load a package
  #list;;                   to list the available packages
  #camlp4o;;                to load camlp4 (standard syntax)
  #camlp4r;;                to load camlp4 (revised syntax)
  #predicates "p,q,...";;   to set these predicates
  Topfind.reset();;         to force that packages will be reloaded
  #thread;;                 to enable threads

- : unit = ()
# #require "llvm";;
/Users/smcho/.opam/system/lib/llvm/.: added to search path
# #require "llvm";;system/lib/llvm/./llvm.cma: loaded
Error: The external function `llvm_global_succ' is not available

编辑2

来自llvm OCaml bindings

cd /Users/smcho/.opam/system/lib/llvm
a@prosseek llvm> ocamlfind ocamlmktop -o llvmtop -thread -linkpkg -package llvm llvm.cma -cc g++
File "llvm.cma(Llvm)", line 1:
Warning 31: files llvm.cma(Llvm) and /Users/smcho/.opam/system/lib/llvm/./llvm.cma(Llvm) both define a module named Llvm

a@prosseek llvm> llvmtop
        OCaml version 4.01.0
# #use "topfind";;
             to enable threads
- : unit = ()
# #require "llvm";;
/Users/smcho/.opam/system/lib/llvm/.: added to search path
/Users/smcho/.opam/system/lib/llvm/./llvm.cma: loaded
# open Llvm;;

但是,我不确定如何使它与ocaml 一起使用,而不是与llvmtop 一起使用。这个网站有关于顶部循环的信息 - http://projects.camlcity.org/projects/dl/findlib-1.3.1/doc/guide-html/quickstart.html

【问题讨论】:

  • OCaml 关于未绑定的外部函数的说法似乎很合乎逻辑。 AFAIU,谢谢为什么要引入自定义顶层的概念。

标签: ocaml llvm opam


【解决方案1】:

我对代码中的符号 Chapter3> 感到困惑。你在哪里得到它?它是某种顶级的吗?将模块加载到顶层的一般过程是:

$ eval `opam config env`
$ opam install llvm
$ ocaml
# #use "topfind";;
# #require "llvm";;
# open Llvm;;

更新 自定义顶层包含一些未加载到默认 OCaml 顶层的 C 函数。它们与它相连。我认为如果您将 -verbose 选项添加到 ocamlfind 调用,您将看到一些特定于 LLVM 的链接选项。

【讨论】:

  • @JeffreyScofield,已修复
  • @prosseek,我好像忘记了#use "topfind";;
猜你喜欢
  • 1970-01-01
  • 2018-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多