我需要在Linux机器上部署依赖于多个动态库的本机OCaml应用程序。我们的想法是准备包含所有内容的独立包(不依赖于OCaml,OPAM等),并且可以假设任何现代x84 Linux盒子安装。在理想的世界中,只需要部署和运行一个文件。
我能想到的最好的方法是将所有需要的动态库(ldd app.native
)与应用程序可执行文件一起部署,并通过在调用应用程序之前导出LD_LIBRARY_PATH
的bash脚本运行应用程序。
欢迎任何想法如何让它变得更好。
更新
一些提示:
libc
兼容性。答案 0 :(得分:6)
OCaml及其全静态方法应该已经开箱即用了。所有OCaml可执行文件都与OCaml库静态链接。关于非OCaml依赖关系,那么你确实可以使用设置LD_LIBRARY_PATH
的包装脚本来部署它们,或者你可以使用rpath
,或者你可以dlopen
你的库,如果它有意义的话您。无论如何,我强烈建议您不要以这种方式对待libc
,即不要尝试安装自己的libc
版本。