Elixir或Erlang程序能否编译为独立的二进制文件?

35

它说Elixir有一个工具叫做elixirc,Erlang有一个工具叫做erlc,用于编译模块。紧接着它说,你可以使用elixir命令行工具运行代码。

是否有一种方法可以使用Elixir或Erlang编译二进制可执行文件?(我可以使用chmod +x binary_name,然后在同一目录下使用./binary_name运行)


2
如果您正在尝试构建本地二进制文件,您可能还想查看这个链接:http://erlang.org/doc/man/HiPE_app.html。这是一种为Erlang/Elixir生成二进制代码的方法,而不是由BEAM解释的字节码。 - Onorio Catenacci
5个回答

19

2
谢谢,可移植性正是我提问的原因。非常感谢。 - Mike H-R

12

请确保查看Distillery。它可以完成您需要的功能,而无需处理 Rebar。

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

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

他们的文档很棒:


10
您可以使用像 rebar 这样的工具生成一个发行版,该发行版还包含 erts,这使得在没有安装 erlang 的机器上运行所述发行版成为可能。但是所包含的 erts 对应于构建发布版本的操作系统,例如如果在 Windows 上构建,那么就会包含 Windows 二进制文件。

5

自Elixir 1.9版本开始,您可以使用Elixir内置的发布(built-in releases)。它是Distillery的轻量级替代品。

注意事项:它不会像Go那样创建一个可以在几乎任何地方运行的单个二进制可执行文件。 此外,您的目标机器必须匹配CPU架构和操作系统。

要构建发布,请运行以下命令:

mix release

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


3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接