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

15,631

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

Share:
15,631
Mike H-R
Author by

Mike H-R

Updated on June 17, 2022

Comments

  • Mike H-R
    Mike H-R almost 2 years

    It says that Elixir has a tool called elixirc and Erlang has a tool called erlc to compile modules for use. It says immediately after this that you can then run code with the elixir 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)