就在(5 月/19 日)—— openjdk9
AArch64 的(实验性)现在可以从 Alpine 存储库中获得!
包详情:
https ://pkgs.alpinelinux.org/package/edge/testing/aarch64/openjdk9
使用:
apk add openjdk9 --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing
前几天我不得不在 musl Alpine 3.8 上从源代码构建 OpenJDK。幸运的是,它非常顺利!因此,如果您最终不得不从源代码构建 OpenJDK 以获得 ARM64 musl 支持,您可以按照这些步骤对您的目标进行一些修改。
注 1:为了扩展评论中的讨论,musl Alpine 上的 OpenJDK 目前正在进行中。最新可用的是 JDK 12 早期访问,仅适用于 X64:http: //jdk.java.net/12。JDK 9、10 和 11 有开发分支,但不是 GA 并正式发布。根据您对构建的 OpenJDK 的使用情况,应该认真考虑这一点。
当然,如果可用的话,最好使用现成和经过测试的 OpenJDK 二进制文件。
注意 2:以下步骤是在 X86 工作站上使用 OpenJDK 11 测试的,通过 Alpine 3.8 传统磁盘安装(不是 docker)。
先决条件:
套餐
应在构建之前安装以下软件包(希望我没有遗漏任何软件包):
// 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
启动 JDK
然后,具有讽刺意味的是,您需要一个启动 JDK:安装了与以前版本相同的 OpenJDK...它可能是在主机上运行的 OpenJDK(未交叉编译),因此您应该着手使用 OpenJDK 10 或 11 musl X86 构建.
在某些时候,提供了一个 OpenJDK 11 早期访问二进制文件,但它已从OpenJDK 下载页面中删除,因为它还没有准备好生产。对于 JDK 引导,这可能就足够了,所以尝试掌握它:openjdk-11+28_linux-x64-musl_bin.tar.gz
. 如果您想(或必须)坚持使用 JDK9,则可以使用 OpenJDK 8 进行引导,因为它可以作为openjdk8
apk 包使用,所以没有问题。
通常启动 JDK 是由构建自动选择的,但如果没有,您可以指定它来配置--with-boot-jdk=[path-to-jdk]
.
资料来源:
对于 Alpine OpenJDK 构建,您应该使用 OpenJDK 的Portola分支。这些已经与 musl 兼容。JDK 9、10 和 11 有分支。如上所述,它们是实验性的。
获取 OpenJDK 11 源代码:
hg clone https://hg.openjdk.java.net/portola/jdk11
建造:
设置好所有内容后,构建非常简单。我用了:
cd jdk11
bash configure
make JOBS=8 LOG=info hotspot
参考:
如需进一步参考,请参阅 JDK11 构建说明(不是专门针对 Alpine):
OpenJDK 交叉编译: