Ocaml / ReasonML-内置可执行文件中缺少库

我有一个使用dune build构建可执行文件的ReasonmL项目。可执行文件可以在开发机器(生成代码的地方)上运行,而不会出现任何问题。但是,如果我将此exe复制到我的另一台笔记本电脑(具有相同OSX版本的另一台Mac)上,由于缺少库,我将无法执行该文件:

dyld: library not loaded: /usr/local/opt/gmp/lib/libgmp.10.dylib
  Referenced from: /usr/local/bin/foo
  Reason: image not found

我对ocaml / reason不太有经验,但是我希望可执行文件将所有必需的依赖项捆绑在二进制文件中。

除了包含所有必需的库之外,dune build之外是否还需要执行特殊的构建标志或其他步骤?

jiesite 回答:Ocaml / ReasonML-内置可执行文件中缺少库

您要寻找的是静态链接二进制文件。不幸的是,MacOS并未正式鼓励或建议使用静态链接。可以找到旧页面here。您可能还会发现this Stackoverflow answer也很有用。

这与OCaml本身无关,而与链接器在不同平台(MacOS,Linux等)上的行为方式有关

要解决您的问题,可以假设您使用esy-gmp作为软件包管理器来结帐esy。如果您使用的是OPAM,则可以向opam依赖项中添加conf-gmp

所有这些,如果您对在支持的平台(例如Linux(我想也是Windows))上的静态链接感兴趣,则必须通过沙丘提供C链接器标志

(link_flags (-ccopt -static))
本文链接:https://www.f2er.com/2704889.html

大家都在问