我有一个正在使用ocamlbuild编译的大型OCaml项目。一切正常,我有一个很棒的可执行文件,可以根据需要执行所有操作。问题是,当我使用该本地可执行文件“my_prog.native”并将其运行在其他地方(具有相同操作系统的其他计算机等)时,新计算机提示找不到甘菊(用于电池)。我正在使用的库)。我以为我们从ocamlbuild获得的可执行文件是独立的,并且不需要OCaml或Camomile出现在我们运行它的机器中,但事实并非如此。
关于如何产生真正的独立可执行文件的任何想法?
最佳答案
大多数OCaml代码是静态链接的。有两件事是动态链接的:
dllfoo.so
,对应于libfoo.a
。如果您有libfoo.a
,我认为它将使用本地代码而不是dllfoo.so
。 libc
或libgtk
使用的lablgtk
等)。 此外,Camomile动态加载其某些Unicode数据,这是特殊情况,不属于标准OCaml链接。您必须查阅Camomile文档,以找到静态嵌入该数据的方法。
关于ocaml - 我可以使用OCamlBuild生成 native 可执行文件,这些可执行文件可以在没有OCaml库的计算机上运行吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4168408/