2011-03-06 50 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,则必须提供支持文件)。