近期正在研究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