1063 Architectures that are known to successfully cross-compile like this are: 1064 1065 Target `CC` `CXX` `--arch=...` `--openjdk-target=...` 1066 ------------ ------------------------- --------------------------- ------------ ---------------------- 1067 x86 default default i386 i386-linux-gnu 1068 armhf gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf armhf arm-linux-gnueabihf 1069 aarch64 gcc-aarch64-linux-gnu g++-aarch64-linux-gnu arm64 aarch64-linux-gnu 1070 ppc64el gcc-powerpc64le-linux-gnu g++-powerpc64le-linux-gnu ppc64el powerpc64le-linux-gnu 1071 s390x gcc-s390x-linux-gnu g++-s390x-linux-gnu s390x s390x-linux-gnu 1072 1073 Additional architectures might be supported by Debian/Ubuntu Ports. 1074 1075 ### Building for ARM/aarch64 1076 1077 A common cross-compilation target is the ARM CPU. When building for ARM, it is 1078 useful to set the ABI profile. A number of pre-defined ABI profiles are 1079 available using `--with-abi-profile`: arm-vfp-sflt, arm-vfp-hflt, arm-sflt, 1080 armv5-vfp-sflt, armv6-vfp-hflt. Note that soft-float ABIs are no longer 1081 properly supported by the JDK. 1082 1083 The JDK contains two different ports for the aarch64 platform, one is the 1084 original aarch64 port from the [AArch64 Port Project]( 1085 http://openjdk.java.net/projects/aarch64-port) and one is a 64-bit version of 1086 the Oracle contributed ARM port. When targeting aarch64, by the default the 1087 original aarch64 port is used. To select the Oracle ARM 64 port, use 1088 `--with-cpu-port=arm64`. Also set the corresponding value (`aarch64` or 1089 `arm64`) to --with-abi-profile, to ensure a consistent build. 1090 1091 ### Verifying the Build 1092 1093 The build will end up in a directory named like 1094 `build/linux-arm-normal-server-release`. 1095 1096 Inside this build output directory, the `images/jdk` will contain the newly 1097 built JDK, for your *target* system. 1098 1099 Copy these folders to your *target* system. Then you can run e.g. 1100 `images/jdk/bin/java -version`. 1101 1102 ## Build Performance 1103 1104 Building the JDK requires a lot of horsepower. Some of the build tools can be 1105 adjusted to utilize more or less of resources such as parallel threads and 1106 memory. The `configure` script analyzes your system and selects reasonable 1107 values for such options based on your hardware. If you encounter resource 1108 problems, such as out of memory conditions, you can modify the detected values 1109 with: 1110 | 1063 Architectures that are known to successfully cross-compile like this are: 1064 1065 Target `CC` `CXX` `--arch=...` `--openjdk-target=...` 1066 ------------ ------------------------- --------------------------- ------------ ---------------------- 1067 x86 default default i386 i386-linux-gnu 1068 armhf gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf armhf arm-linux-gnueabihf 1069 aarch64 gcc-aarch64-linux-gnu g++-aarch64-linux-gnu arm64 aarch64-linux-gnu 1070 ppc64el gcc-powerpc64le-linux-gnu g++-powerpc64le-linux-gnu ppc64el powerpc64le-linux-gnu 1071 s390x gcc-s390x-linux-gnu g++-s390x-linux-gnu s390x s390x-linux-gnu 1072 1073 Additional architectures might be supported by Debian/Ubuntu Ports. 1074 1075 ### Building for ARM/aarch64 1076 1077 A common cross-compilation target is the ARM CPU. When building for ARM, it is 1078 useful to set the ABI profile. A number of pre-defined ABI profiles are 1079 available using `--with-abi-profile`: arm-vfp-sflt, arm-vfp-hflt, arm-sflt, 1080 armv5-vfp-sflt, armv6-vfp-hflt. Note that soft-float ABIs are no longer 1081 properly supported by the JDK. 1082 1083 ### Verifying the Build 1084 1085 The build will end up in a directory named like 1086 `build/linux-arm-normal-server-release`. 1087 1088 Inside this build output directory, the `images/jdk` will contain the newly 1089 built JDK, for your *target* system. 1090 1091 Copy these folders to your *target* system. Then you can run e.g. 1092 `images/jdk/bin/java -version`. 1093 1094 ## Build Performance 1095 1096 Building the JDK requires a lot of horsepower. Some of the build tools can be 1097 adjusted to utilize more or less of resources such as parallel threads and 1098 memory. The `configure` script analyzes your system and selects reasonable 1099 values for such options based on your hardware. If you encounter resource 1100 problems, such as out of memory conditions, you can modify the detected values 1101 with: 1102 |