2011-03-06 54 views
1

我在嘗試理解如何在OCaml中生成一個不需要任何太特定的二進制文件(例如安裝了OCaml構建工具的任何東西)時發瘋了。構建獨立的OCaml程序

我使用OMake,一切似乎不夠冷靜在我的機器上工作時,還鏈接庫與

OCAMLPACKS[] = str unix batteries 

工作得很好,但如果我嘗試分發可執行它給了我下面的錯誤:

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

是我使用GODI但我沒有看到這個錯誤的任何明顯的理由,任何人都可以告訴我嗎?此外,如果您有關於構建獨立應用程序的任何技巧,請告訴我(我已經與GODI爭辯說,編譯everylib只是在其x64版本,現在我無法生產x86可執行文件)

謝謝提前

回答

3

camomile庫需要運行時配置。有關如何設置的信息,請參閱README.txt。 特別是,它需要運行時文件(您看到丟失的.mar)才能正常工作。

+0

我應該只提供指定目錄內的所有'mar'文件以及可執行文件嗎?但有沒有辦法強制一個不同的文件夾,而不是看我的'本地'GODI文件夾? – Jack 2011-03-06 14:32:22

+0

您可以嘗試使用[CamomileLibraryDyn](http://camomile.sourceforge.net/dochtml/CamomileLibraryDyn.html)模塊,並在環境中配置「CAMOMILE_DATADIR」。如果你通過電池使用甘菊,那麼你應該檢查電池如何初始化甘菊。 – tonio 2011-03-06 14:38:43

2

我不使用OMake,既不是電池,也不是GODI也不是Camomile。但是從我看到的問題來看,這個問題似乎來自於你連接電池的事實,我猜想它必須在內部使用Camomile,並且Camomile依靠存儲在文件系統中的數據來提供它的一些服務。如果該數據不在最終主機上,則無法加載。

請注意,運送純粹靜態的可調整對OCaml來說相當簡單。但爲此,您需要考慮使用哪些庫(例如,如果使用camomille,則必須提供支持文件)。