Windows使用WSL編譯自己的JDK
- 一、獲取源碼
- 二、構建編譯環境
- 三、進行編譯
- 驗證編譯結果
- 四、配置環境變量
- 五、使用CLion進行調試
參考資料:《深入理解java虛擬機》
筆者使用的操作系統為windows,但是windows編譯自己的jdk還是比較麻煩的,所以我們就需要使用wsl構建一個ubuntu操作系統環境,然后編譯。所幸構建ubuntu操作系統還是比較簡單的,在微軟商店搜索ubuntu,下載18版本即可。下載完成后打開,就可以看到ubuntu操作系統的命令行窗口了,使用cd命令進入/mnt文件夾,這個文件夾下的c文件夾對應C盤,d對應D盤,以此類推。
一、獲取源碼
現在我們需要獲取OpenJDK源碼,激怒JDK12版本的倉庫頁面,點擊左側的“Browse”,進入jdk12的根目錄,然后點擊左邊的“zip”即可下載當前版本打包好的源碼,到本地直接解壓即可。
這里強烈建議一定要仔細閱讀源碼中的doc/building.html,可以使用網頁翻譯功能也是能看懂的。
二、構建編譯環境
打開ubuntu,依次執行下面的代碼即可
工具 | 安裝命令 |
---|---|
GCC | sudo apt-get install build-essential |
FreeType | sudo apt-get install libfreetype6-dev |
CUPS | sudo apt-get install libcups2-dev |
X11 | sudo apt-get install libx11-dev libxext-dev libxrender-dev libxrandr-dev libxtst-dev libxt-dev |
ALSA | sudo apt-get install libasound2-dev |
libffi | sudo apt-get install libffi-dev |
Autoconf | sudo apt-get install autoconf |
jdk11 | sudo apt-get install openjdk-11-jdk |
三、進行編譯
如編譯FashDebug版、僅含Server模式的HotSpot虛擬機,命令應為:
bash configure --enable-debug --with-jvm-variants=server
注:此處如果帶著調試、定制化需求去編譯自己的OpenJDK,可以使用“bash configure --help”查詢OpenJDK提供的編譯參數,有興趣可以自己嘗試探索。
運行編譯命令后:
可以看到成功頁面,如果GCC版本太高的話,gcc下會出現報錯信息,此處請注意檢查。
還有一個坑就是出現了以下報錯信息:
Could not find required tool for ZIPEXE
這是由于沒有安裝zip導致的,執行 sudo apt-get install zip即可
接下來就可以輸入 make images 執行整個OpenJDK編譯了,此處編譯會耗費大量時間,筆者大概花費了一個小時左右才編譯完成(R7 5800H)。
Creating jdk image
Creating CDS archive for jdk image
Stopping sjavac server
Finished building target 'images' in configuration 'macosx-x86_64-server-fastdebug'
當彈出以上文字時說明編譯成功
驗證編譯結果
進入編譯成功后的jdk中的bin目錄
執行 java -version命令,可以看到以下結果
說明編譯成功,此目錄已經可以作為一個jdk使用
四、配置環境變量
- 使用vim配置環境變量
sudo vim ~/.bashrc
- 使用編輯模式在文檔最后輸入
# 這里要更改成你自己的目錄export JAVA_HOME=/mnt/e/download/jdk12-06222165c35f/build/linux-x86_64-server-fastdebug/jdkexport JRE_HOME=${JAVA_HOME}/jreexport CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/libexport PATH=.:${JAVA_HOME}/bin:$PATH
- 編輯完成后,使用:w 回車保存
使用:wq 退出vim
退出vim后輸入以下代碼保存環境變量
source ~/.bashrc
- 查看Java 版本信息
java -version
- 得到輸出結果
openjdk version "12-internal" 2019-03-19
OpenJDK Runtime Environment (fastdebug build 12-internal+0-adhoc.root.jdk12-06222165c35f)
OpenJDK 64-Bit Server VM (fastdebug build 12-internal+0-adhoc.root.jdk12-06222165c35f, mixed mode)
可以看到現在的jdk已經成了我們自己編譯的jdk
五、使用CLion進行調試
現在我們在原來的WIndows操作系統上打開CLion,然后選擇遠程連接,連接到自己的WSL上,打開jdk12的源碼
現在,我們就可以編譯jdk12的源碼并且使用自己調試的jdk了