我想将我的OCaml项目编译成可执行文件,可以在没有安装OCaml的其他计算机上运行.使用ocamlbuild,当我编出".native"文件,它工作在其他机器上正常,但如果我编出".BYTE"文件,它失败,一个Cannot exec ocamlrun
消息时,我尝试运行可执行文件.
由于我的程序的字节码版本在文件大小方面明显较小,我宁愿分发它而不是本机代码.有没有办法在编译时将ocamlrun捆绑到可执行文件中?
您需要从自定义模式编译,从ocamlc用户手册:
-custom
在"自定义运行时"模式下链接.在默认链接模式下,链接器生成的字节码旨在与共享运行时系统ocamlrun一起执行.在自定义运行时模式下,链接器生成一个输出文件,其中包含运行时系统和程序的字节码.生成的文件较大,但即使未安装ocamlrun命令,也可以直接执行.此外,"自定义运行时"模式允许OCaml代码与用户定义的C函数进行静态链接,如本章所述
Unix:永远不要对ocamlc -custom生成的可执行文件使用strip命令,这会删除可执行文件的字节码部分.
如果您正在使用,oasis
那么您需要的只是将Custom : true
字段添加到可执行部分,类似地ocamlbuild
,添加-tag custom
或自定义_tags
.
归档时间: |
|
查看次数: |
800 次 |
最近记录: |