近期正在研究jdk15,爲了對jdk15有更深一層的瞭解,進行了一次對jdk15源碼的編譯,在此進行一次記錄,如下是詳細過程:html
1.準備工具(windows環境):java
boot jdk : 編譯好的jdk14(衆所周知,要想編譯jdk須要先有編譯好的上個版本jdk,由於jdk源碼有不少java代碼,因此須要Boot jdk編譯java部分代碼)windows
Visual Studio(有興趣能夠用vs修改jdk源碼)bash
cygwin64 (官方推薦模擬unix環境)工具
jdk15源碼ui
2.安裝cygwin64依賴:spa
- autoconf
- zip
- unzip
- make
- tar
3.生成jdk源碼配置文件debug
經過打開cygwin64 跳到jdk15源碼目錄下執行configureunix
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
說明:code
- –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