我有一个正在使用ocamlbuild编译的大型OCaml项目。一切正常,我有一个很棒的可执行文件,可以根据需要执行所有操作。问题是,当我使用该本地可执行文件“my_prog.n​​ative”并将其运行在其他地方(具有相同操作系统的其他计算机等)时,新计算机提示找不到甘菊(用于电池)。我正在使用的库)。我以为我们从ocamlbuild获得的可执行文件是独立的,并且不需要OCaml或Camomile出现在我们运行它的机器中,但事实并非如此。

关于如何产生真正的独立可执行文件的任何想法?

最佳答案

大多数OCaml代码是静态链接的。有两件事是动态链接的:

  • 使用字节码时的C stub 库(可能还有 native 代码,尽管我认为不是这种情况)。这些是dllfoo.so,对应于libfoo.a。如果您有libfoo.a,我认为它将使用本地代码而不是dllfoo.so
  • 动态库取决于运行时库或 stub 库(例如libclibgtk使用的lablgtk等)。

  • 此外,Camomile动态加载其某些Unicode数据,这是特殊情况,不属于标准OCaml链接。您必须查阅Camomile文档,以找到静态嵌入该数据的方法。

    关于ocaml - 我可以使用OCamlBuild生成 native 可执行文件,这些可执行文件可以在没有OCaml库的计算机上运行吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4168408/

    10-09 08:09
    查看更多