Can Elixir or Erlang programs be compiled to a standalone binary?
Solution 1
Escripts support that to some extent but you still need Erlang installed in your machine. See this answer for more information: Elixir or Hex portable package format?
Solution 2
Make sure you checkout Distillery. It does what you need, without having to deal with Rebar.
Add this to your mix.exs file's dependencies then run mix release
.
defp deps do
[{:distillery, "~> 0.9"}]
end
Their documentation is great:
Solution 3
You can use tools like rebar to generate a release that also contains the erts, which makes it possible to run said release on a machine where erlang is not installed. But the erts included corresponds to the operating system on which the release was built, i.e. windows binaries if built on windows.
Solution 4
You can use Elixir's built-in releases as of Elixir 1.9. It is a lightweight alternative to Distillery.
Caveats: It will not create anything remotely like Go does with a single binary executable that you can run almost anywhere. Also your target will have to match the CPU architecture and OS.
To build a release run:
mix release
Read more here: https://hexdocs.pm/mix/Mix.Tasks.Release.html
Mike H-R
Updated on June 17, 2022Comments
-
Mike H-R almost 2 years
It says that Elixir has a tool called
elixirc
and Erlang has a tool callederlc
to compile modules for use. It says immediately after this that you can then run code with theelixir
command line tool.Is there a way to compile a binary executable with Elixir or Erlang? (one which I can
chmod +x binary_name
and then run from the same directory with./binary_name
)