Compilar OpenJDK 9 y con ARM64 MUSL-libs

Denis Voloshin:

Un fondo poco.

Mi objetivo es crear una imagen de ventana acoplable súper delgado con JRE en ARM64. Aquí son posibles áreas donde pueda afectar en el tamaño de la imagen final.

  1. Utilización de Java 9 y hasta me permite aprovechar la nueva capacidad de módulos java.
  2. El uso de Alpine para ARM64 proporciona una imagen base súper delgado.

Lo que he hecho hasta ahora: Hay OpenJDK 9 y hasta lanzamientos para ARM64, utilizando la capacidad de los módulos llegué tamaño JRE alrededor de 30M, que es un gran logro.

Ahora estoy trabajando en movimiento a la imagen de la base de los Alpes, se requiere tener un OpenJDK ser compilado con MUSL-libc. Me las arreglé para volver a compilar el duraron OpenJDK con glibc, mi pregunta es cómo esto es complicado para compilar el OpenJDK 9 con libc MUSL, mi entendimiento dice, la glibc y MUSL exponga la misma interfaz, básicamente, el OpenJDK debe ser compatible con MUSL-libc.

Se apreciarán cualquier tipo de direcciones para golpear este desafío.

Valiano:

Sólo en (mayo / 19) - openjdk9(experimental) para AArch64 ya está disponible en los repositorios de los Alpes!

Detalles del paquete: https://pkgs.alpinelinux.org/package/edge/testing/aarch64/openjdk9

Agarrarlo usando:

apk add openjdk9 --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing

El otro día tuve que construir OpenJDK desde las fuentes en MUSL Alpine 3.8. Por suerte, era bastante suave! Por lo tanto, si usted va a terminar encima de tener que construir OpenJDK de la fuente de ARM64 MUSL apoyo, usted puede seguir estos pasos con algunas modificaciones para su objetivo.

Nota 1: Para extender la discusión en los comentarios, OpenJDK en MUSL Alpine se encuentra actualmente en proceso de trabajo. Los últimos 12 está disponible JDK acceso temprano, para X64 solamente: http://jdk.java.net/12 . JDK 9, 10 y 11 tienen ramas de desarrollo, pero no se GA'd y lanzado oficialmente. En función del uso de la OpenJDK construcción, este debe considerarse seriamente.

Naturalmente, siempre es mejor usar OpenJDK binarios listos y probados, si tales están disponibles.

Nota 2: El pasos siguientes fueron probados con OpenJDK 11, sobre Alpine 3.8 instalación del disco tradicional (no estibador), en una estación de trabajo X86.

Requisitos previos:

paquetes

Los siguientes paquetes se deben instalar antes de la construcción (espero que no me falta alguna):

// build tools and utilities  
apk add build-base autoconf bash coreutils gawk grep mercurial zip  
// X11 libraries   
apk add libx11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev  
// Additional libraries  
apk add alsa-lib-dev cups-dev fontconfig-dev

bota de JDK

Entonces, irónicamente, se necesita un arranque JDK: OpenJDK de la misma de la versión anterior instalada ... Podría ser OpenJDK que se ejecuta en el host (no cruza compilados), por lo que debe poner las manos en OpenJDK 10 o 11 MUSL X86 construye .

En algún momento, se puso a disposición un OpenJDK 11 binaria acceso temprano, pero fue retirado de la página de descarga OpenJDK , ya que no estaba listo para producción. Para JDK arranque, puede ser suficiente, así que trate de conseguir un asimiento de él: openjdk-11+28_linux-x64-musl_bin.tar.gz. Si usted quiere (o tiene que) se adhieren a JDK9, a continuación, OpenJDK 8 podría ser utilizado para el arranque, y no hay problema ya que está disponible como openjdk8paquete APK.

Por lo general, la bota JDK es recogida automáticamente por la acumulación, pero si no es así, podría especificar que configure con --with-boot-jdk=[path-to-jdk].

Fuentes:

Para Alpine construye OpenJDK, se debe utilizar de OpenJDK Portola ramas. Estas ya son compatibles con MUSL. Hay ramas para JDK 9, 10 y 11. Como se indicó anteriormente, son experimental.

Para agarrar el código fuente OpenJDK 11:

hg clone https://hg.openjdk.java.net/portola/jdk11

Edificio:

Una vez que había todo lo establecido, la construcción es bastante simple. Solía:

cd jdk11
bash configure
make JOBS=8 LOG=info hotspot

referencias:

Para mayor referencia, consulte las instrucciones de construcción JDK11 (no específicamente de Alpine):

OpenJDK compilación cruzada:

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=218063&siteId=1
Recomendado
Clasificación