部署独立的本机 OCaml 应用程序
Deploying self-contained native OCaml application
我需要向 Linux 框部署一个依赖于多个动态库的本机 OCaml 应用程序。这个想法是准备包含所有东西的独立包(不依赖于 OCaml、OPAM 等),并且可以安装在假设的任何现代 x84 Linux 机器上。在理想世界中,只有一个文件要部署并且 运行.
我能想到的最好的方法是通过导出 [=11] 的 bash 脚本部署所有需要的动态库 (ldd app.native
) 以及应用程序可执行文件和 运行 应用程序=] 在调用应用程序之前。
欢迎提出任何改进意见。
更新
一些提示:
- 使用 Linux Application Checker 验证与不同 Linux 发行版的兼容性。
- 在稳定但有点过时的发行版(例如现在的 CentOS 6)上构建二进制包以提高
libc
兼容性。
- build a binary package, and run 可执行文件的脚本示例。
OCaml 及其全静态方法应该已经开箱即用。所有 OCaml 可执行文件都与 OCaml 库静态链接。关于非 OCaml 依赖项,那么实际上您可以使用设置 LD_LIBRARY_PATH
的包装脚本部署它们,或者您可以使用 rpath
,或者您可以 dlopen
您的库,如果它对你。无论如何,我强烈建议您不要以这种方式对待 libc
,即不要尝试安装您自己的 libc
版本。
我需要向 Linux 框部署一个依赖于多个动态库的本机 OCaml 应用程序。这个想法是准备包含所有东西的独立包(不依赖于 OCaml、OPAM 等),并且可以安装在假设的任何现代 x84 Linux 机器上。在理想世界中,只有一个文件要部署并且 运行.
我能想到的最好的方法是通过导出 [=11] 的 bash 脚本部署所有需要的动态库 (ldd app.native
) 以及应用程序可执行文件和 运行 应用程序=] 在调用应用程序之前。
欢迎提出任何改进意见。
更新
一些提示:
- 使用 Linux Application Checker 验证与不同 Linux 发行版的兼容性。
- 在稳定但有点过时的发行版(例如现在的 CentOS 6)上构建二进制包以提高
libc
兼容性。 - build a binary package, and run 可执行文件的脚本示例。
OCaml 及其全静态方法应该已经开箱即用。所有 OCaml 可执行文件都与 OCaml 库静态链接。关于非 OCaml 依赖项,那么实际上您可以使用设置 LD_LIBRARY_PATH
的包装脚本部署它们,或者您可以使用 rpath
,或者您可以 dlopen
您的库,如果它对你。无论如何,我强烈建议您不要以这种方式对待 libc
,即不要尝试安装您自己的 libc
版本。