<div dir="ltr">We build on e.g. Linux AMD64 systems, targeting AARCH64. But we use Gluon Substrate, which exits the native-image process after the object file is generated.<div>Linking the object file with the required libs (static JDK and JavaFX libs) is then done on the Pi itself.</div><div>Note that indeed this only works on 64-bit systems at this moment, as there is no 32-bit arm generation yet in GraalVM native-image.</div><div><br></div><div>- Johan</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Oct 9, 2020 at 2:12 PM Samuel Audet &lt;<a href="mailto:samuel.audet@gmail.com">samuel.audet@gmail.com</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Johan,<br>
<br>
How do you guys create your images for aarch64?<br>
<br>
Samuel<br>
<br>
On 10/9/20 8:53 PM, Ramsey Gurley wrote:<br>
&gt; Someone can correct me if I am wrong, since I haven&#39;t tried.<br>
&gt; <br>
&gt; According to what I&#39;ve read, images built with jaotc are processor<br>
&gt; dependent and considered very beta quality. images built with<br>
&gt; native-image are not. There is no arm 32 bit native-image, because there<br>
&gt; is no graalvm for arm except for aarch64, but jaotc is included with<br>
&gt; java 10+.<br>
&gt; <br>
&gt; I&#39;m under the impression it is possible to cross compile a native image,<br>
&gt; but you would need a copy of the target graalvm as well as libc and<br>
&gt; other things. It is probably hard and you&#39;re better off compiling on<br>
&gt; aarch64 if you can :)<br>
&gt; <br>
&gt; My guess is you would be okay building native-image on gravitons to<br>
&gt; deploy on whatever aarch64 device you want. Even with limited ram, you<br>
&gt; could build on device with enough swap, but that&#39;s just going to be<br>
&gt; really painfully slow.<br>
&gt; <br>
&gt; <br>
&gt; On 10/9/20 4:12 PM, Thorsten Schöning wrote:<br>
&gt;&gt; Guten Tag Ramsey Gurley,<br>
&gt;&gt; am Donnerstag, 8. Oktober 2020 um 12:44 schrieben Sie:<br>
&gt;&gt;<br>
&gt;&gt;&gt; I haven&#39;t gotten to the point of deploying one yet, but I&#39;ve built<br>
&gt;&gt;&gt; them on aarch64. It takes a lot of memory. A hello world vertx<br>
&gt;&gt;&gt; application built with native-image takes nearly 4GB of RAM to<br>
&gt;&gt;&gt; build. You will probably want to build your native images on AWS<br>
&gt;&gt;&gt; graviton2 instances for more speed and available memory.<br>
&gt;&gt; Thanks for mentioning that, didn&#39;t have that in mind at all. :-)<br>
&gt;&gt;<br>
&gt;&gt; How identical need the build server be to the system where things get<br>
&gt;&gt; deployed to in the end? Same CPU, but different amount of RAM only? Or<br>
&gt;&gt; is a different CPU OK if it&#39;s the same ARM-architecture? Like all<br>
&gt;&gt; aarch64 are OK, regardless model, number of cores or alike? Is there<br>
&gt;&gt; any cross-compiling possible for aarch64 native images on x86-64?<br>
&gt;&gt;<br>
&gt;&gt; I&#39;m wondering because the SoC discussed for me currently is only<br>
&gt;&gt; available with 256 MiB of RAM at all, so one really would need to<br>
&gt;&gt; build somewhere else. Besides the fact that it might not even be 64<br>
&gt;&gt; Bit and might not work at all with native image. :-/<br>
&gt;&gt;<br>
&gt;&gt; Mit freundlichen Grüßen,<br>
&gt;&gt;<br>
&gt;&gt; Thorsten Schöning<br>
&gt;&gt;<br>
</blockquote></div>