1

私はOCamlで書かれたインストルメンテーションフレームワークをコンパイルしていて、OCamlの解釈の初心者です。実行中にこのエラーが発生しますscons

ocamlc.opt -dtypes -I instrumentor -I ocaml -I ./cbi/cil/cil-1.4.0/obj/x86_LINUX 
-w Ael -warn-error A -o instrumentor/phase.cmi -c instrumentor/phase.mli

File "instrumentor/phase.mli", line 1, characters 0-1:
Error: /u/j/o/joy/Desktop/cbi/cil/cil-1.4.0/obj/x86_LINUX/cil.cmi
is not a compiled interface

Instrumentor / phase.mliの内容:

type phase = string * (Cil.file -> unit)

私はOCaml3.11.1を使用しています。このエラーを修正するためのヒントを提供できれば便利です。


@gascheが以下に述べるように:エラーはおそらく使用されているコンパイラ間のバージョンの不一致が原因です。このリンクhttp://ocaml.org/tutorials/common_error_messages.htmlには、その他の一般的なエラーの詳細とリストがあります。

4

1 に答える 1

2

ワイルドな推測ですが、これは次のいずれかである可能性があります。

  • .cmi無関係なファイルを;にコピーするビルドシステムの問題。問題のあるコンテンツをcil.cmi見て、それが明らかにcmiではないもの(テキストファイルなど)であるかどうかを確認できますか。ocamlobjinfo <file>また、ファイルが実際にOCaml形式である場合に、ファイルに関する情報を取得するために使用することもできます。

  • Cilのコンパイル済みファイルとプロジェクトで使用しているコンパイラのバージョンとのバージョンの不一致(コンパイラは、これが間違ったバージョン番号の有効なcmiであることを認識し、より有益なエラーメッセージを表示することを期待しますが、決して知る)。cilファイルが現在使用しているものと同じバージョンのOCamlで作成されていることを確認してください。

于 2013-03-07T10:19:01.620 に答える