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

问题描述 投票:0回答:5

它说Elixir有一个名为

elixirc
的工具,Erlang有一个名为
erlc
的工具来编译模块以供使用。在此之后,您可以立即使用
elixir
命令行工具运行代码。

有没有办法用 Elixir 或 Erlang 编译二进制可执行文件? (我可以

chmod +x binary_name
然后使用
./binary_name
从同一目录运行)

compilation erlang elixir
5个回答
18
投票

Escripts 在某种程度上支持这一点,但你仍然需要在你的机器上安装 Erlang。有关更多信息,请参阅此答案:Elixir 或 Hex 便携式软件包格式?

编辑:在 2023 年,burrito/bakeware 也是有效的答案,正如 @Dorian 提到的。


12
投票

请务必结账酿酒厂。它可以满足您的需求,而无需处理 Rebar。

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

mix release

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

他们的文档很棒:


10
投票

您可以使用像 rebar 这样的工具来生成也包含 erts 的版本,这使得可以在未安装 erlang 的计算机上运行该版本。但包含的 erts 与构建该版本的操作系统相对应,即,如果在 Windows 上构建,则为 Windows 二进制文件。


5
投票

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

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

构建发布运行:

mix release

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


3
投票

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

烘焙用具:https://github.com/bake-bake-bake/bakeware

墨西哥卷饼:https://github.com/burrito-elixir/burrito

© www.soinside.com 2019 - 2024. All rights reserved.