windows上编译jdk

发布时间 2023-07-01 15:51:58作者: 无以铭川

Windows上编译jdk21

参考文档: https://openjdk.org/groups/build/doc/building.html

环境准备

编译 jdk 需要 unix 环境, 在 windows 上可以使用 WSL 或 Cygwin.

建议修改系统语言为 英语(美国).

笔者这里使用 Cygwin, 建议安装64位的 Cygwin, 去官网下载安装包运行, 注意在选择软件包的时候, 左上角查看选择 完整, 搜索要安装的四个包:

  • autoconf
  • make
  • zip
  • unzip

新增项上选择最新版本.

image-20230701151823814

image-20230701151808004

然后是 MSVC 环境, 安装 Visual Studio 2022, 语言包加上英文, 建议不要修改安装路径.

如果已经安装过 Visual Studio, 加上英语语言包即可, 注意 Visual Studio 版本不能小于2019.

image-20230701152013869

image-20230701152100703

然后是准备 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.