如何将我的OCaml代码编译为独立的字节码可执行文件?

时间:2014-12-18 13:04:57

标签: ocaml

我想将我的OCaml项目编译成可执行文件,可以在没有安装OCaml的其他计算机上运行。使用ocamlbuild,当我编译一个“.native”文件时,它在其他机器上工作正常,但是如果我编译一个“.byte”文件,当我尝试运行可执行文件时,它会失败,并显示Cannot exec ocamlrun消息。

由于我的程序的字节码版本在文件大小方面明显较小,我宁愿分发它而不是本机代码。有没有办法在编译时将ocamlrun捆绑到可执行文件中?

1 个答案:

答案 0 :(得分:7)

您需要从ocamlc用户manual自定义模式进行编译:

  

-custom

     

“自定义运行时”模式下的链接。在默认链接模式下,链接器生成用于执行的字节码   共享运行时系统,ocamlrun。在自定义运行时模式下,   链接器生成包含运行时系统的输出文件   和程序的字节码。生成的文件更大,但它   即使ocamlrun命令不是,也可以直接执行   安装。此外,“自定义运行时”模式启用静态链接   具有用户定义的C函数的OCaml代码,如

章节所述      

Unix:永远不要对ocamlc -custom生成的可执行文件使用strip命令,这会删除可执行文件的字节码部分。

如果您正在使用oasis,那么您需要的只是将Custom : true字段添加到可执行部分,类似地,对于ocamlbuild,添加-tag custom或将自定义放入_tags