目录
Windows上编译jdk21
参考文档: https://openjdk.org/groups/build/doc/building.html
环境准备
编译 jdk 需要 unix 环境, 在 windows 上可以使用 WSL 或 Cygwin.
建议修改系统语言为 英语(美国).
笔者这里使用 Cygwin, 建议安装64位的 Cygwin, 去官网下载安装包运行, 注意在选择软件包的时候, 左上角查看选择 完整
, 搜索要安装的四个包:
- autoconf
- make
- zip
- unzip
新增项上选择最新版本.
然后是 MSVC 环境, 安装 Visual Studio 2022, 语言包加上英文, 建议不要修改安装路径.
如果已经安装过 Visual Studio, 加上英语语言包即可, 注意 Visual Studio 版本不能小于2019.
然后是准备 boot-jdk
: jdk 编译时需要另一个 jdk 提供支持, 该 jdk 称为 boot-jdk
, boot-jdk
的版本要比想要编译的 jdk 的版本刚好低1个大版本. 例如 jdk8 可以作为 jdk9 的 boot-jdk
.
如果当前环境变量中的 jdk 已经是你想要编译的版本的 boot-jdk
那就无需准备, 否则, 请去下载对应版本的 jdk.
最后, 下载 jdk 源码, 建议直接下载对应版本的 tag, 也可以 git clone https://github.com/openjdk/jdk.git
, 然后 git checkout tag_name
.
编译
打开 Cygwin, 进入到要编译的 jdk 目录.
执行:
# configure
bash configure \
--with-boot-jdk=<boot-jdk-path> \
--with-jvm-variants=server \
--with-debug-level=slowdebug \
--with-boot-jdk-jvmargs="-Dfile.encoding=utf-8 -Duser.country=us -Duser.language=en" \
--with-extra-cflags=/utf-8 \
--with-extra-cxxflags=/utf-8
# build
make images
笔者这里想要编译 debug 版本在后续可以进行 debug, 因此增加了 --with-debug-level=slowdebug
参数, 后面参数调整编码避免编译时因为错误编码报错.
更多参数不一一列举, 读者可以通过 bash configure --help
以及翻阅官方文档.
经过漫长的编译后, build
目录下就将出现构建完成后的 jdk.