Elixir 或 Erlang 程序可以编译成独立的二进制文件吗?

Can Elixir or Erlang programs be compiled to a standalone binary?

说Elixir有个工具叫elixirc,Erlang有个工具叫erlccompile modules可以用。在此之后它立即表示您可以使用 elixir 命令行工具 运行 代码。

有没有办法用 Elixir 或 Erlang 编译二进制可执行文件? (我可以 chmod +x binary_name 然后 运行 来自与 ./binary_name 相同的目录)

Escripts 在某种程度上支持这一点,但您仍然需要在您的机器上安装 Erlang。有关详细信息,请参阅此答案:Elixir or Hex portable package format?

您可以使用 rebar 之类的工具来生成还包含 erts 的版本,这样就可以 运行 在未安装 erlang 的机器上发布上述版本。但是包含的 erts 对应于构建版本的操作系统,即 windows 二进制文件,如果构建在 windows.

确保结帐 Distillery。它可以满足您的需求,而无需处理钢筋。

将此添加到您的 mix.exs 文件的依赖项中,然后 运行 mix release

defp deps do
  [{:distillery, "~> 0.9"}]
end

他们的文档很棒:

从 Elixir 1.9 开始,您可以使用 Elixir 的内置版本。它是 Distillery 的轻量级替代品。

注意事项: 它不会像 Go 使用单个二进制可执行文件那样远程创建任何东西,你几乎可以在任何地方 运行。此外,您的目标必须匹配 CPU 体系结构和 OS.

要构建一个版本 运行:

mix release

在此处阅读更多内容: https://hexdocs.pm/mix/Mix.Tasks.Release.html

现在有一些工具可以让您创建一个独立的可执行二进制文件,不需要对目标机器有任何依赖。他们支持多个平台。

烤盘:https://github.com/bake-bake-bake/bakeware

卷饼:https://github.com/burrito-elixir/burrito