diff options
Diffstat (limited to 'docs/en/erlang.mk/1/guide/cross_compiling/index.html')
-rw-r--r-- | docs/en/erlang.mk/1/guide/cross_compiling/index.html | 240 |
1 files changed, 0 insertions, 240 deletions
diff --git a/docs/en/erlang.mk/1/guide/cross_compiling/index.html b/docs/en/erlang.mk/1/guide/cross_compiling/index.html deleted file mode 100644 index 6f87326d..00000000 --- a/docs/en/erlang.mk/1/guide/cross_compiling/index.html +++ /dev/null @@ -1,240 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> - -<head> - <meta charset="utf-8"> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta name="description" content=""> - <meta name="author" content="Loïc Hoguin based on a design from (Soft10) Pol Cámara"> - - <title>Nine Nines: Cross compiling</title> - - <link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'> - <link href="/css/99s.css?r=5" rel="stylesheet"> - - <link rel="shortcut icon" href="/img/ico/favicon.ico"> - <link rel="apple-touch-icon-precomposed" sizes="114x114" href="/img/ico/apple-touch-icon-114.png"> - <link rel="apple-touch-icon-precomposed" sizes="72x72" href="/img/ico/apple-touch-icon-72.png"> - <link rel="apple-touch-icon-precomposed" href="/img/ico/apple-touch-icon-57.png"> - - -</head> - - -<body class=""> - <header id="page-head"> - <div id="topbar" class="container"> - <div class="row"> - <div class="span2"> - <h1 id="logo"><a href="/" title="99s">99s</a></h1> - </div> - <div class="span10"> - - <div id="side-header"> - <nav> - <ul> - <li><a title="Hear my thoughts" href="/articles">Articles</a></li> - <li><a title="Watch my talks" href="/talks">Talks</a></li> - <li class="active"><a title="Read the docs" href="/docs">Documentation</a></li> - <li><a title="Request my services" href="/services">Consulting & Training</a></li> - </ul> - </nav> - <ul id="social"> - <li> - <a href="https://github.com/ninenines" title="Check my Github repositories"><img src="/img/ico_github.png" data-hover="/img/ico_github_alt.png" alt="Github"></a> - </li> - <li> - <a title="Contact me" href="mailto:[email protected]"><img src="/img/ico_mail.png" data-hover="/img/ico_mail_alt.png"></a> - </li> - </ul> - </div> - </div> - </div> - </div> - - -</header> - -<div id="contents" class="two_col"> -<div class="container"> -<div class="row"> -<div id="docs" class="span9 maincol"> - -<h1 class="lined-header"><span>Cross compiling</span></h1> - -<p>Erlang.mk supports cross-compiling. While the compiled Erlang code is portable as-is, the C code is not and releases need to use the correct runtime system for the target environment.</p> -<p>There are therefore two steps that might require some intervention: compiling and building the release. If you do not have any C code you can just compile as you would normally, however.</p> -<h2 id="_compiling">Compiling</h2> -<p>To cross-compile the C code you need a cross compiler. If you were to target Windows from an Arch Linux machine you would install the <a href="https://aur.archlinux.org/packages/mingw-w64-gcc/">mingw-w64-gcc</a> package. You would then need to define the <code>CC</code> environment variable to point to this compiler instead of the default:</p> -<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.8 -by Lorenzo Bettini -http://www.lorenzobettini.it -http://www.gnu.org/software/src-highlite --> -<pre><tt><font color="#009900">CC</font><font color="#990000">=</font>/usr/bin/x86_64-w<font color="#993399">64</font>-mingw<font color="#993399">32</font>-gcc</tt></pre> -</div></div> -<p>Additionally, on Windows the shared libraries use a different extension than on Linux, so it needs to be specified as well:</p> -<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.8 -by Lorenzo Bettini -http://www.lorenzobettini.it -http://www.gnu.org/software/src-highlite --> -<pre><tt><font color="#009900">C_SRC_OUTPUT_SHARED_EXTENSION</font><font color="#990000">=.</font>dll</tt></pre> -</div></div> -<p>These values can be added to the Makefile or given from the command line, for example:</p> -<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.8 -by Lorenzo Bettini -http://www.lorenzobettini.it -http://www.gnu.org/software/src-highlite --> -<pre><tt>$ <font color="#009900">CC</font><font color="#990000">=</font>/usr/bin/x86_64-w<font color="#993399">64</font>-mingw<font color="#993399">32</font>-gcc <font color="#009900">C_SRC_OUTPUT_SHARED_EXTENSION</font><font color="#990000">=.</font>dll make - DEPEND my_nif<font color="#990000">.</font>d - ERLC my_nif<font color="#990000">.</font>erl - APP my_nif - C my_nif<font color="#990000">.</font>c - LD my_nif<font color="#990000">.</font>dll -$ file priv/my_nif<font color="#990000">.</font>dll -priv/my_nif<font color="#990000">.</font>dll<font color="#990000">:</font> PE32<font color="#990000">+</font> executable <font color="#990000">(</font>DLL<font color="#990000">)</font> <font color="#990000">(</font>console<font color="#990000">)</font> x86-<font color="#993399">64</font><font color="#990000">,</font> <b><font color="#0000FF">for</font></b> MS Windows</tt></pre> -</div></div> -<p>You could also add this configuration to your Makefile hidden behind a flag:</p> -<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.8 -by Lorenzo Bettini -http://www.lorenzobettini.it -http://www.gnu.org/software/src-highlite --> -<pre><tt>ifdef WINDOWS_BUILD -<font color="#009900">CC =</font> /usr/bin/x86_64-w<font color="#993399">64</font>-mingw<font color="#993399">32</font>-gcc -<font color="#009900">C_SRC_OUTPUT_SHARED_EXTENSION =</font> .dll -endif</tt></pre> -</div></div> -<p>And then just compile like this:</p> -<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.8 -by Lorenzo Bettini -http://www.lorenzobettini.it -http://www.gnu.org/software/src-highlite --> -<pre><tt>$ make <font color="#009900">WINDOWS_BUILD</font><font color="#990000">=</font><font color="#993399">1</font></tt></pre> -</div></div> -<h2 id="_building_the_release">Building the release</h2> -<p>For the release there are two options. You can either include the correct runtime system directly in the release; or you can not include the runtime system in the release and instead let it use the one installed in the target environment.</p> -<p>To include the target runtime system, add the <code>include_erts</code> tuple to your <em>relx.config</em> file:</p> -<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.8 -by Lorenzo Bettini -http://www.lorenzobettini.it -http://www.gnu.org/software/src-highlite --> -<pre><tt>{<font color="#FF6600">include_erts</font>, <font color="#FF0000">"/path/to/alternate/erlang"</font>}<font color="#990000">.</font></tt></pre> -</div></div> -<p>If you were to target Windows for example, you could copy the Erlang installation from the <em>Program Files</em> directory and then configure <em>relx.config</em> like this:</p> -<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.8 -by Lorenzo Bettini -http://www.lorenzobettini.it -http://www.gnu.org/software/src-highlite --> -<pre><tt>{<font color="#FF6600">include_erts</font>, <font color="#FF0000">"/path/to/erl10.1"</font>}<font color="#990000">.</font></tt></pre> -</div></div> -<p>You need to make sure that the runtime system version you will use is capable of running the compiled Erlang code you used to build your project, otherwise it will fail to run.</p> -<p>If you choose to not include the runtime system at all, configure <em>relx.config</em> as follow:</p> -<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.8 -by Lorenzo Bettini -http://www.lorenzobettini.it -http://www.gnu.org/software/src-highlite --> -<pre><tt>{<font color="#FF6600">include_erts</font>, <font color="#000080">false</font>}<font color="#990000">.</font></tt></pre> -</div></div> -<p>In that case the runtime system needs to be available in the <code>$PATH</code> of the target environment.</p> - - - - - - - - - - - - <nav style="margin:1em 0"> - - <a style="float:left" href="https://ninenines.eu/docs/en/erlang.mk/1/guide/kerl/"> - OTP version management - </a> - - - - <a style="float:right" href="https://ninenines.eu/docs/en/erlang.mk/1/guide/compat/"> - Compatibility with other build tools - </a> - - </nav> - - - - -</div> - -<div class="span3 sidecol"> - - -<h3> - Erlang.mk - 1 - - User Guide -</h3> - -<ul> - - - -</ul> - -<h4 id="docs-nav">Navigation</h4> - -<h4>Version select</h4> -<ul> - - - - <li><a href="/docs/en/erlang.mk/1/guide">1</a></li> - -</ul> - -<h3 id="_like_my_work__donate">Like my work? Donate!</h3> -<p>Donate to Loïc Hoguin because his work on Cowboy, Ranch, Gun and Erlang.mk is fantastic:</p> -<form action="https://www.paypal.com/cgi-bin/webscr" method="post" style="display:inline"> -<input type="hidden" name="cmd" value="_donations"> -<input type="hidden" name="business" value="[email protected]"> -<input type="hidden" name="lc" value="FR"> -<input type="hidden" name="item_name" value="Loic Hoguin"> -<input type="hidden" name="item_number" value="99s"> -<input type="hidden" name="currency_code" value="EUR"> -<input type="hidden" name="bn" value="PP-DonationsBF:btn_donate_LG.gif:NonHosted"> -<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!"> -<img alt="" border="0" src="https://www.paypalobjects.com/fr_FR/i/scr/pixel.gif" width="1" height="1"> -</form><p>Recurring payment options are also available via <a href="https://salt.bountysource.com/teams/ninenines">BountySource</a>. These funds are used to cover the recurring expenses like dedicated servers or domain names.</p> - - - -</div> -</div> -</div> -</div> - - <footer> - <div class="container"> - <div class="row"> - <div class="span6"> - <p id="scroll-top"><a href="#">↑ Scroll to top</a></p> - <nav> - <ul> - <li><a href="mailto:[email protected]" title="Contact us">Contact us</a></li><li><a href="https://github.com/ninenines/ninenines.github.io" title="Github repository">Contribute to this site</a></li> - </ul> - </nav> - </div> - <div class="span6 credits"> - <p><img src="/img/footer_logo.png"></p> - <p>Copyright © Loïc Hoguin 2012-2018</p> - </div> - </div> - </div> - </footer> - - - <script src="/js/custom.js"></script> - </body> -</html> - - |