でライブラリを使用するには、私は指示に従って使用してはocamlfindインストールサイト-libにライブラリをインストールし設定するためのを追いました。私は2つのライブラリを持っていました:一つは論理と呼ばれ、もう一つはブールと呼ばれます。私はocamlbuild用いた論理とブール値に依存して別のプロジェクトをビルドするために行ったとき、私は、その後「インストールはocamlfind」を使用してOCamlのライブラリを設定して、ocamlbuild
ocamlfind install boolean META boolean.cmo boolean.cmx boolean.cmi boolean.mli
:それぞれのケースで、私は例えば、ライブラリー内の.cmo、.cmx、.cmiと.mliファイルのファイルをインストール
$ocamlbuild -use-ocamlfind test_logic.native -classic-display
...
/home/phil/godi-3.12.1.0/bin/ocamlfind ocamlopt -c -package boolean -package deriving- ocsigen -package deriving-ocsigen.syntax -package logic -package oUnit -package unix -syntax camlp4o -o test_logic.cmx test_logic.ml
/home/phil/godi-3.12.1.0/bin/ocamlfind ocamlopt -linkpkg -linkpkg -package boolean -package deriving-ocsigen -package deriving-ocsigen.syntax -package logic -package oUnit -package unix -syntax camlp4o vhdl.cmx fsm.cmx test_logic.cmx -o test_logic.native
+ /home/phil/godi-3.12.1.0/bin/ocamlfind ocamlopt -linkpkg -linkpkg -package boolean -package deriving-ocsigen -package deriving-ocsigen.syntax -package logic -package oUnit -package unix -syntax camlp4o vhdl.cmx fsm.cmx test_logic.cmx -o test_logic.native
gcc: /home/phil/godi-3.12.1.0/lib/ocaml/site-lib/logic/logic.o: No such file or directory
gcc: /home/phil/godi-3.12.1.0/lib/ocaml/site-lib/boolean/boolean.o: No such file or directory
File "caml_startup", line 1, characters 0-1:
Error: Error during linking
Command exited with code 2.
は、私は、サイト-libに、それぞれの領域に上の論理とブールプロジェクトから.oファイルをコピーし、それをコンパイルし、罰金リンク:次のエラーメッセージが表示されました。
私はなぜ.oファイルが必要で、なぜgccがここに含まれているのだろうと思いますか?
ここケースで私の_tagsファイルは、それが助けます:
<*.ml> or "test_logic.native" or "test_loginc.byte": package(boolean),package(unix), package(oUnit), package(deriving-ocsigen), package(deriving-ocsigen.syntax), syntax(camlp4o), package(logic)
私は詳細を知らない、しかしocamloptは、ネイティブコンパイラです。 .oファイルと.cmxファイルの両方を生成します。彼らはペアで一緒に保つ必要があります。 ocamloptはリンカを内部的に実行することによってリンクを行い、しばしばgccをリンカとして使います。 -verboseフラグを付けて実行するコマンドを見ることができます。 –
ライブラリ内の.cmxファイル(site-lib/logicおよびsite-lib/boolean)で十分ではありませんか? – aneccodeal
さて、ocamloptはそのようには機能しません。 .oファイルには生成されたコードがすべて含まれています。 .cmxファイルは単なるメタ情報です。これは、.oファイルに対して標準のUnixツールを使うだけでよいので便利です。たとえば、特別なリンカーは必要ありません。 –