Correct Compiler for ARM / Arch64 for the jdk8u forest? (-m64 not supported)

Erik Joelsson erik.joelsson at oracle.com
Thu Apr 20 11:33:46 UTC 2017


I'm not familiar with building for arm/aarch64 on the native platform 
(i.e. not cross compiling) in jdk8u. It definitely looks like the 
configuration is confused. The command line for hotspot seems to think 
that it's supposed to produce an x86_64 binary using your aarch64 
compiler. I suspect you will need to set more environment variables 
manually to trick the hotspot makefiles into doing the right thing.

We fixed a lot of things in this area in JDK 9, where I'm pretty sure 
this would just work.

/Erik


On 2017-04-20 13:16, Martijn Verburg wrote:
> Hi all,
>
> We've been putting together a community build farm and have wrangled from
> ARM machines. We are building from jdk8u and have the following
> configuration:
>
> -----
>
> A new configuration has been successfully created in
> /home/jenkins/workspace/george_arm_test/openjdk/build/linux-aarch64-normal-server-release
> using configure arguments
> '--with-boot-jdk=/usr/lib/jvm/java-1.7.0-openjdk-arm64 --enable-ccache
> --with-jvm-variants=server
> --with-cacerts-file=/home/jenkins/workspace/george_arm_test/cacerts_area/security/cacerts
> --with-alsa=/home/jenkins/workspace/george_arm_test/alsa-lib-1.0.27.2
> --with-freetype=/home/jenkins/workspace/george_arm_test/openjdk/installedfreetype
> --with-x=/usr/include/X11 --with-debug-level=release'.
>
> Configuration summary:
> * Debug level:    release
> * JDK variant:    normal
> * JVM variants:   server
> * OpenJDK target: OS: linux, CPU architecture: aarch64, address length: 64
>
> Tools summary:
> * Boot JDK:       java version "1.7.0_95" OpenJDK Runtime Environment
> (IcedTea 2.6.4) (7u95-2.6.4-3) OpenJDK 64-Bit Server VM (build 24.95-b01,
> mixed mode)  (at /usr/lib/jvm/java-1.7.0-openjdk-arm64)
> * C Compiler:     gcc-5 (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.4) 5.4.0
> version 5.4.0 (at /usr/bin/gcc-5)
> * C++ Compiler:   g++-5 (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.4) 5.4.0
> version 5.4.0 (at /usr/bin/g++-5)
>
> Build performance summary:
> * Cores to use:   16
> * Memory limit:   128878 MB
> * ccache status:  installed and in use
>
> Configured the JDK
>
> ------
>
> We notice that the configure output states:
>
> checking if the C compiler supports "-m64"... no
> checking if the C++ compiler supports "-m64"... no
> checking if both compilers support "-m64"... no
> checking if the C compiler supports "-m64"... no
> checking if the C++ compiler supports "-m64"... no
> checking if both compilers support "-m64"... no
>
> -----
>
> The hotspot build then fails (predictably enough) at:
>
> CCACHE_COMPRESS=1  CCACHE_SLOPPINESS=time_macros /usr/local/bin/ccache
> /usr/bin/g++-5 -DLINUX -D_GNU_SOURCE -DAMD64 -DPRODUCT -I.
> -I/home/jenkins/workspace/george_arm_test/openjdk/hotspot/src/share/vm/prims
> -I/home/jenkins/workspace/george_arm_test/openjdk/hotspot/src/share/vm
> -I/home/jenkins/workspace/george_arm_test/openjdk/hotspot/src/share/vm/precompiled
> -I/home/jenkins/workspace/george_arm_test/openjdk/hotspot/src/cpu/x86/vm
> -I/home/jenkins/workspace/george_arm_test/openjdk/hotspot/src/os_cpu/linux_x86/vm
> -I/home/jenkins/workspace/george_arm_test/openjdk/hotspot/src/os/linux/vm
> -I/home/jenkins/workspace/george_arm_test/openjdk/hotspot/src/os/posix/vm
> -I../generated -DHOTSPOT_RELEASE_VERSION="\"25.71-b00\""
> -DHOTSPOT_BUILD_TARGET="\"product\"" -DHOTSPOT_BUILD_USER="\"jenkins\""
> -DHOTSPOT_LIB_ARCH=\"aarch64\" -DHOTSPOT_VM_DISTRO="\"OpenJDK\""
>   -DTARGET_OS_FAMILY_linux -DTARGET_ARCH_x86 -DTARGET_ARCH_MODEL_x86_64
> -DTARGET_OS_ARCH_linux_x86 -DTARGET_OS_ARCH_MODEL_linux_x86_64
> -DTARGET_COMPILER_gcc -DCOMPILER2 -DCOMPILER1 -fPIC -fno-rtti
> -fno-exceptions -D_REENTRANT -fcheck-new -fvisibility=hidden -m64  -pipe
> -fno-strict-aliasing  -g -fno-omit-frame-pointer -O3  -DVM_LITTLE_ENDIAN
> -D_LP64=1 -Werror -Wpointer-arith -Wsign-compare -Wundef -Wunused-function
> -Wunused-value     -std=gnu++98 -c -MMD -MP -MF
> ../generated/dependencies/precompiled.hpp.gch.d -fpch-deps -x c++-header
> /home/jenkins/workspace/george_arm_test/openjdk/hotspot/src/share/vm/precompiled/precompiled.hpp
> -o precompiled.hpp.gch
> *g++-5: error: unrecognized command line option '-m64'*
>
> -----
>
> We're inexperienced at build on this architecture, I assuming that we
> either need a compiler that supports -m64 or that -m64 should not be passed
> through in this case?
>
> Cheers,
> Martijn




More information about the build-dev mailing list