部署自包含的本机OCaml应用程序

时间:2015-04-22 21:45:07

标签: linux deployment ocaml

我需要在Linux机器上部署依赖于多个动态库的本机OCaml应用程序。我们的想法是准备包含所有内容的独立包(不依赖于OCaml,OPAM等),并且可以假设任何现代x84 Linux盒子安装。在理想的世界中,只需要部署和运行一个文件。

我能想到的最好的方法是将所有需要的动态库(ldd app.native)与应用程序可执行文件一起部署,并通过在调用应用程序之前导出LD_LIBRARY_PATH的bash脚本运行应用程序。

欢迎任何想法如何让它变得更好。

更新

一些提示:

  • 使用Linux Application Checker验证与不同Linux发行版的兼容性。
  • 在稳定但有点过时的发行版(例如现在的CentOS 6)上构建二进制包,以提高libc兼容性。
  • build二进制包的脚本示例,run可执行文件的脚本示例。

1 个答案:

答案 0 :(得分:6)

OCaml及其全静态方法应该已经开箱即用了。所有OCaml可执行文件都与OCaml库静态链接。关于非OCaml依赖关系,那么你确实可以使用设置LD_LIBRARY_PATH的包装脚本来部署它们,或者你可以使用rpath,或者你可以dlopen你的库,如果它有意义的话您。无论如何,我强烈建议您不要以这种方式对待libc,即不要尝试安装自己的libc版本。