【问题标题】:Building standalone OCaml program构建独立的 OCaml 程序
【发布时间】:2011-03-06 13:23:27
【问题描述】:

当我试图了解如何在 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 争论,它只编译了 x64 版本的everylib,现在我无法生成 x86 可执行文件)

提前致谢

【问题讨论】:

    标签: linker ocaml distribute ocaml-batteries


    【解决方案1】:

    camomile 库需要运行时配置。有关如何设置的信息,请参阅README.txt。 特别是,它需要运行时文件(您看到的缺少的.mar)才能正常工作。

    【讨论】:

    • 我是否应该将指定目录中的所有mar文件连同可执行文件一起提供?但是有没有办法强制使用不同的文件夹而不是查看我的“本地”GODI 文件夹?
    • 可以尝试使用CamomileLibraryDyn模块,在环境中配置CAMOMILE_DATADIR。如果你通过电池使用甘菊,那么你应该检查电池是如何初始化甘菊的。
    【解决方案2】:

    我不使用 OMake,既不使用电池,也不使用 GODI 和甘菊。但从我所看到的情况来看,问题似乎来自这样一个事实,即您链接电池,我猜它必须在内部使用甘菊,而甘菊依赖于存储在文件系统中的数据来提供一些服务。如果最终主机上不存在该数据,则加载失败。

    请注意,使用 OCaml 发送纯静态可执行文件是相当简单的事情。但为此,您需要考虑使用哪些库(例如,如果您使用 camomille,则必须随附支持文件)。

    【讨论】:

      猜你喜欢
      • 2010-09-06
      • 2017-12-09
      • 2018-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-27
      • 1970-01-01
      相关资源
      最近更新 更多