2011-03-06 11 views
1

あまりにも具体的なもの(例えば、OCamlビルドツールがインストールされているものなど)を必要としないOCamlでバイナリを生成する方法を理解しようとすると、狂ってしまいます。非常によくスタンドアロンOCamlプログラムのビルド

OCAMLPACKS[] = str unix batteries 

作品で、私のマシン上でも、リンクのlibsを仕事をしながら、私はOMakeの、すべてを使用してい

は十分クールだが、私は実行可能ファイルを配布しようとした場合、それは私に次のエラーを与えます:

Fatal error: exception Sys_error("/usr/godi/share/camomile/database/general_category.mar: No such file or directory") 

はい私はGODIを使用していますが、私は誰も私を啓発することができ、このエラーの明白な理由が表示されないのですか?さらに、スタンドアローンアプリケーションの構築に関するトリックがあれば教えてください。(私はすでに、x64版でeverylibをコンパイルしたGODIと議論していますが、今はx86実行可能ファイルを生成できません)

ありがとうadvance

答えて

3

camomileライブラリには実行時設定が必要です。設定方法については、README.txtを参照してください。 特に、正常に動作するにはランタイムファイル(見つからない.mar)が必要です。

+0

私は、指定されたディレクトリ内のすべての 'mar'ファイルを実行可能ファイルと共に提供するだけですか?しかし、私の 'ローカル' GODIフォルダを見る代わりに、別のフォルダを強制する方法はありますか? – Jack

+0

[CamomileLibraryDyn](http://camomile.sourceforge.net/dochtml/CamomileLibraryDyn.html)モジュールを使用し、その環境で 'CAMOMILE_DATADIR'を設定することができます。乾電池でカモミールを使用する場合は、どのようにバッテリがカモミールを初期化するのかを確認する必要があります。 – tonio

2

私はOMakeを使用せず、電池もGODIもCamomileも使用しません。しかし、私が見るところでは、Camomileを内部的に使用しなければならないと思われるバッテリーとリンクし、Camomileはそのサービスの一部を提供するためにファイルシステムに格納されたデータに依存しているという事実から問題が発生しているようです。そのデータが最終ホストに存在しない場合、ロードに失敗します。

純粋に静的なexcutablesを出荷することは、OCamlにはかなり簡単なことです。しかし、そのためには、どのライブラリを使用するかを検討する必要があります(たとえば、camomilleを使用する場合は、サポートファイルを出荷する必要があります)。