【问题标题】:Building llvm bindings with ocamlbuild in Ocaml在 Ocaml 中使用 ocamlbuild 构建 llvm 绑定
【发布时间】:2014-01-13 01:03:13
【问题描述】:

我可以构建和安装 LLVM,并且 ocaml 绑定库位于 /usr/local/llvm/lib/ocaml 目录中。

在构建示例 (http://llvm.org/docs/tutorial/OCamlLangImpl3.html) 时,我尝试了 ocamlbuild toy.byte 以获取错误消息。

a@prosseek Chapter3> ocamlbuild toy.byte
Finished, 0 targets (0 cached) in 00:00:00.
+ /usr/local/bin/ocamlc.opt -c -o codegen.cmo codegen.ml
File "codegen.ml", line 5, characters 0-9:
Error: Unbound module Llvm
Command exited with code 2.
Compilation unsuccessful after building 10 targets (9 cached) in 00:00:00.

似乎找不到 LLVM 库。如何教 ocaml 找到一个?

我有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++"]);;

我也尝试使用ocamlbuild toy.byte -pkg llvm 来得到这个错误。

Warning: tag "package" does not expect a parameter, but is used with parameter "llvm"
+ /usr/local/bin/ocamlc.opt -c bindings.c
clang: warning: argument unused during compilation: '-fno-defer-pop'
+ /usr/local/bin/ocamlc.opt llvm.cma llvm_analysis.cma llvm_executionengine.cma llvm_target.cma llvm_scalar_opts.cma -cc g++ -I /Users/smcho/.opam/system/lib/llvm/. '-ccopt -lstdc++' llvm.cma ast.cmo codegen.cmo token.cmo lexer.cmo parser.cmo toplevel.cmo toy.cmo bindings.o -o toy.byte
/usr/local/bin/ocamlc.opt: unknown option `-ccopt -lstdc++'.
Usage: ocamlc <options> <files>
Options are:
.. 

我使用 Mac OS X 10.7 并使用 brew 安装了 ocaml。

【问题讨论】:

  • 让我们关闭它并将讨论转移到您的下一个关于 opam 的主题)现在导出 OCAMLLIB 是某种黑客)

标签: macos binding ocaml llvm


【解决方案1】:

要使用ocamlbuild-package 选项,您必须传递额外的-use-ocamlfind 选项:ocamlbuild -use-ocamlfind toy.byte -package llvm

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 2015-12-01
    • 1970-01-01
    相关资源
    最近更新 更多