【问题标题】:Deploying self-contained native OCaml application部署自包含的本机 OCaml 应用程序
【发布时间】:2015-04-22 21:45:07
【问题描述】:

我需要将依赖于几个动态库的本机 OCaml 应用程序部署到 Linux 机器。这个想法是准备包含所有东西的自包含包(不依赖于 OCaml、OPAM 等),并且可以安装在假设的任何现代 x84 Linux 机器上。在理想情况下,只需部署和运行一个文件。

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

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

更新

一些提示:

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

【问题讨论】:

  • 我认为“OCaml”方面在这里是次要的吗? IE。问题可能是在 linux 上部署一个独立的二进制文件。如果没有,您能否更准确地指出问题所在。
  • @DanielBünzli 是的,你说得对,OCaml 是次要的。

标签: linux deployment ocaml


【解决方案1】:

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

【讨论】:

  • 你能解释一下不静态链接libc的原因吗?谢谢!
  • libc 的二进制版本取决于系统
猜你喜欢
  • 2015-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-17
  • 2022-06-17
  • 1970-01-01
相关资源
最近更新 更多