6

私は ocamlbuild でコンパイルしている大規模な OCaml プロジェクトを持っています。すべてが正常に動作します。必要なすべてを実行する優れた実行可能ファイルがあります。問題は、そのネイティブ実行可能ファイル「my_prog.n​​ative」を別の場所 (同じオペレーティング システムの別のマシンなど) で実行すると、新しいマシンがカモミール (バッテリーで使用される) を見つけることができないと訴えることです。私が使用しているライブラリ)。ocamlbuild から取得した実行可能ファイルはスタンドアロンであり、それを実行したマシンに OCaml や Camomile が存在する必要はないと思っていましたが、そうではないようです。

本当にスタンドアロンの実行可能ファイルを作成する方法についてのアイデアはありますか?

4

2 に答える 2

7

ほとんどの OCaml コードは静的にリンクされています。動的にリンクされるものは 2 つあります。

  • バイトコードを使用する場合の C スタブ ライブラリ (およびネイティブ コードの可能性がありますが、これは事実ではないと思います)。これらはdllfoo.so、 に対応していlibfoo.aます。がある場合は、ネイティブ コードlibfoo.aではなくそれを使用すると思います。dllfoo.so
  • ランタイム ライブラリまたはスタブ ライブラリに依存する動的ライブラリ ( libc、 またはlibgtkによって使用されるlablgtkなど)。

さらに、Camomile はその Unicode データの一部を動的にロードします。これは、標準の OCaml リンクに該当しない特殊なケースです。そのデータを静的に埋め込む方法を見つけるには、Camomile のドキュメントを参照する必要があります。

于 2010-11-13T03:26:20.830 に答える
3

私の知る限り、Camomileは実行時に動的にロードされるため、最も簡単な方法は、実行可能ファイルとともにDLL/共有オブジェクトを提供することです。

静的リンクを強制することもできますが、これによりアプリケーションがLGPLライセンスで汚染される可能性があります。

于 2010-11-12T20:52:02.797 に答える