在Mac OS中编译的可执行文件无法在Ubuntu服务器中运行?

时间:2016-09-12 22:37:32

标签: ocaml

我在Mac OS中编写了一个单行OCaml程序:print_string "hello world!\n"。然后我按ocamlopt -o test test.ml编译了它,生成的test工作正常。

然后我把这个test scp到我的Ubuntu& Nginx服务器,未安装OCaml。我发布了./test,但收到了错误:-bash: ./code: cannot execute binary file: Exec format error

所以我必须在服务器上安装OCaml,并在那里编译我的程序吗?难道不可能以某种方式在Mac OS中编译我的程序,以便单独的可执行文件可以在Ubuntu服务器中运行吗?

1 个答案:

答案 0 :(得分:1)

可执行(二进制)格式不能跨系统移植,没有。 ocamlopt生成一种格式,该格式对于进行编译的系统来说是原生的,除非它是相同的类型,否则你不应该期望它在任何其他系统上运行。

您可以通过编译为字节码来获得可移植性(使用ocamlc而不是ocamlopt)。但是,字节码可执行文件运行得更慢。

相关问题