2

私のMacに切り替えても、この問題はなくなりましたが、同様の問題があります。このチュートリアルから https://github.com/llvm-mirror/llvm/tree/master/examples/OCaml-Kaleidoscope/Chapter7ocaml llvm万華鏡チュートリアル "Unbound module LlvmExecutionEngine"

http://llvm.org/docs/tutorial/OCamlLangImpl7.html

(私はこれらの2つが同じ人である99%確信している)

後:私は仕事にこれを取得しようとしているOCaml llvm "Unbound module ExecutionEngine"

いくつかの問題を回避する私は最後の数時間のつまずきに達しました

[email protected]:~/Desktop/llvm-master/examples/OCaml-Kaleidoscope/Chapter7$ ocamlbuild -use-ocamlfind toy.byte -package llvm llvm_executionengine 
    Finished, 0 targets (0 cached) in 00:00:00. 
    File "_tags", line 4, characters 41-53: 
    Warning: the tag "use_bindings" is not used in any flag declaration, so it will have no effect; it may be a typo. Otherwise use `mark_tag_used` in your myocamlbuild.ml to disable this warning. 
    + ocamlfind ocamlc -c -package llvm -o toplevel.cmo toplevel.ml 
    File "toplevel.ml", line 6, characters 5-24: 
    Error: Unbound module LlvmExecutionEngine 
    Command exited with code 2. 
    Compilation unsuccessful after building 13 targets (12 cached) in 00:00:00. 

私は確かにllvm_executionengineが正しいパッケージであるかのように、私はそれがどんなパッケージであるかを知らない何かを試してみるかのようです。すべてのヘルプはスーパーだろう

(*===----------------------------------------------------------------------=== 
* Top-Level parsing and JIT Driver 
*===----------------------------------------------------------------------===*) 

    open Llvm 
    open Llvm_executionengine 

    (* top ::= definition | external | expression | ';' *) 
    let rec main_loop the_fpm the_execution_engine stream = 
     match Stream.peek stream with 
     | None ->() 

:ここ

はエラーラインとコードの先頭数行ですさ!

私はtobiasBoraの答えの最初の部分を試してみましたが、この結果を得た:(私はあなたの例から「llvm_executionengine」を削除したことに注意してください)

$ ocamlbuild -use-ocamlfind test.byte -package llvm 
Finished, 0 targets (0 cached) in 00:00:00. 
File "_tags", line 4, characters 41-53: 
Warning: the tag "use_bindings" is not used in any flag declaration, so it will have no effect; it may be a typo. Otherwise use `mark_tag_used` in your myocamlbuild.ml to disable this warning. 
Solver failed: 
    Ocamlbuild cannot find or build test.ml. A file with such a name would usually be a source file. I suspect you have given a wrong target name to Ocamlbuild. 
Compilation unsuccessful after building 0 targets (0 cached) in 00:00:00. 
+0

エラーメッセージは、「未結合のモジュールLlvmExecutionEngine」と言うが、あなたのオープンLLvm_executionengine:あなたはまだ問題がある場合、それはいくつかの問題を解決することがあり、3.5バージョンをインストールしてみてください。そのうちの1つが間違っているはずです。 – camlspotter

+0

@camlspotter私はこれが単なる奇妙な名前の問題だと思った。あなたはエラーがオープンコールと一致しないと指摘した場合、私は非常に混乱しているので、私には他のアドバイスはありませんか? – Bren

+0

@Brenあなたは正しいファイルを見ていますか?たぶんあなたはtoplevel.mlを一つのディレクトリで見ているかもしれませんが、ocamlfindはtoplevel.mlを 'open LlvmExecutionengine'という別のディレクトリにコンパイルしています。 – sepp2k

答えて

1

まず

ocamlbuild -use-ocamlfind toy.byte -package llvm 

でコンパイルしようとします

まだ動作しない場合は、私のためにこれを試してみてください:最初に私はOcaml 4.03.0を実行しています:

opam switch 4.03.0 

、その後、私はLLVMをインストールする必要があります。

opam depext llvm.3.8 
opam install llvm 

depextがインストールされていない場合(、それが自動的にインストールされます。そして、それが自動的に続いて、このcode

を実行します私はあなたのコードをコンパイル:

ocamlbuild -use-ocamlfind toy.byte -package llvm 

あなたがいることに注意することができます)私はあなたの例では「llvm_executionengine」を除去したことに注意してください古いバージョンのocamlでは、バグをllvm 3.8で使用できなくなりました。

sudo apt-get install llvm-3.5 llvm-3.5-dev 
+0

今すぐ最初の行を試してみてください。何らかの理由でスイッチの回線が不平を言っています。このエラーが発生します $ opamスイッチ4.03.0 [エラー] "4.03.0"は有効なコンパイラではありません。 – Bren

+0

最初の行の結果は私の答えの一番下にあります。 – Bren

+0

私はあなたと同じファイル名を使用しませんでしたが、test.byteをtoy.byteに変更しました。 – tobiasBora

関連する問題