近期正在研究jdk15,为了对jdk15有更深一层的了解,进行了一次对jdk15源码的编译,在此进行一次记录,以下是详细过程:

1.准备工具(windows环境):

    boot jdk : 编译好的jdk14(众所周知,要想编译jdk需要先有编译好的上个版本jdk,因为jdk源码有很多java代码,所以需要Boot jdk编译java部分代码)

    Visual Studio(有兴趣可以用vs修改jdk源码)

    cygwin64 (官方推荐模拟unix环境)

    jdk15源码

2.安装cygwin64依赖:

  • autoconf
  • zip
  • unzip
  • make
  • tar

3.生成jdk源码配置文件

通过打开cygwin64 跳到jdk15源码目录下执行configure

bash ./configure --enable-debug --disable-warnings-as-errors --with-ucrt-dll-dir="/cygdrive/c/Program Files (x86)/Windows Kits/10/Redist/10.0.18362.0/ucrt/DLLs/x64" --with-boot-jdk=/cygdrive/d/Environment/Java/openjdk-14

说明:

  • –enable-debug 等价于 --with-debug-level=fastdebug,此外还有 release、slowdebug 两个参数,他们是编译级别,默认是 release(发布版)
  • –with-ucrt-dll-dir 是指定 DLL 目录,具体为:"/cygdrive/c/Program Files (x86)/Windows Kits/10/Redist/版本号/ucrt/DLLs/x64",这里是一个映射,/cygdrive/c/Program Files (x86) 就是 Windows 的 C:\Program Files (x86)目录(cygwin64的映射),具体的目录是我们安装好 Visual studio之后产生的目录,版本号可能会有不同,大家自行修改成自己的
  • –with-boot-jdk 指定boot jdk 的安装目录,改成自己的目录即可
  • 更多Aruguments可见JDK源码中的文件:dir/doc/building.html

4.编译

输入make all进行编译

make all

遇到问题:

编译过程中可能会碰到很多奇葩问题,在此记录下笔者碰见的问题

1. Your path contains Windows tools (C:\Windows\system32) before your unix (cyg....

   检查环境导致的 打开make\autoconf\toolchain.ms 搜索 Target CPU mismatch  注释掉相应if

2.Could not start process!  Failed with error 5: 拒绝访问。

    管理员权限运行cygwin64

06-01 23:50