我已經在我的Mac OS中編寫了一行OCaml程序:print_string "hello world!\n"
。然後我編譯它ocamlopt -o test test.ml
,生成的test
工作正常。在Mac OS中編譯的可執行文件無法在Ubuntu服務器中運行?
然後我scp test
到我的Ubuntu & Nginx服務器,其中OCaml沒有安裝。我啓動了./test
,並且出現錯誤:-bash: ./code: cannot execute binary file: Exec format error
。
所以我必須在服務器上安裝OCaml,並在那裏編譯我的程序?難道不能以某種方式在Mac OS中編譯我的程序,使得可執行文件可以在Ubuntu服務器上運行嗎?
除了Jeffrey的回答,您還可以交叉編譯,在Docker容器中構建可執行文件,並從容器中提取生成的二進制+鏈接的.so文件,或者在與目標主機相匹配的虛擬機中構建。 – hcarty