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

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.


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?


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


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:

  • Home - Distillery Documentation