全網最新最簡單的 OpenJDK13 代碼編譯
- 2019 年 10 月 10 日
- 筆記
個人博客原文:全網最新最簡單的 OpenJDK13 代碼編譯
最近因寫文章需要查看 JVM 源碼,有時代碼邏輯不是很清晰,找半天,趁國慶假期,抽空下載了 OpenJDK13 搭建了 JVM debug 環境,把操作記錄寫在這篇文章里,讓有需要的朋友可以參考,少踩坑。
我是在 Ubuntu 18.04 下編譯的,不是在 Windows,建議不在 Windows 下折騰,會遇到比在 Linux 環境下多得多的問題。如果你電腦也是 Windows,可以像我這樣,安裝個 VMware 虛擬機軟件,在裏面裝個 Ubuntu 系統,在虛擬機裏面玩,這 2 個軟件在官網下載就行,當然如果懶得去找也可以在我的公眾號後台回復: 虛擬機
獲取 VMware 軟件和 Ubuntu 18.04 鏡像。
安裝 Ubuntu 虛擬機就不在這篇文章說了,網上有相關的資料。
開始咯
1.下載源碼
平時咱用的代碼管理工具大多數是 Git,OpenJDK 並不是,而是用 Mercurial 管理工具,所以我們要安裝它。通過下面命令安裝。
sudo apt-get install mercurial
安裝完代碼管理工具後,我們就可以下載 OpenJDK13 的源碼了,使用如下命令即可下載。這個過程根據網絡狀況,需要的時間不一,我下載花了十來分鐘。
hg clone http://hg.openjdk.java.net/jdk/jdk13/
嗯,我就是這樣乾等了十來分鐘,因為具體的官方操作文檔也在裏面,沒下載下來無法看,網上也找不到相關的 Ubuntu 18 編譯 OpenJDK13 的文章,所以不知道具體要安裝哪些依賴。現在你看到這篇文章,可以不用乾等着了,接下來步驟 2 和 3 不依賴源代碼,可以繼續操作。
2.安裝編譯需要的依賴
這一部分是查看了官方文檔,做了總結,官方文檔裏面是按軟件區分的,那樣一個命令一個命令敲有點繁瑣,就把它整合成一個命令,執行就完了,滿足有些朋友想儘快編譯完,少些多餘的東西。
sudo apt-get install libfreetype6-dev libcups2-dev libx11-dev libxext-dev libxrender-dev libxrandr-dev libxtst-dev libxt-dev libasound2-dev libffi-dev autoconf gcc clang libfontconfig1-dev
想了解這些依賴軟件是幹嘛用的,可以看看官方文檔,文檔的位置如下圖。
3.安裝 jdk 12
這個在文檔裏面稱為 Boot JDK,就是編譯時需要上一個版本的 JDK 做為基礎,一般是使用 N-1 版本,比如編譯 OpenJDK8 就使用 JDK7 作為 Boot JDK,我們這裡是編譯 OpenJDK13,所以使用的是 JDK12。也是執行下面命令就搞定。
sudo add-apt-repository ppa:openjdk-r/ppa sudo apt-get update sudo apt-get install openjdk-12-jdk
安裝完可以通過 java -version
來驗證一下是否成功安裝。見到如下結果就妥妥的。
執行完上面步驟,那麼恭喜你,現在就可以開始編譯了。
4.檢查配置
我們安裝了上面那麼多東西,需要來檢查一下是不是已經安裝完所需要的軟件,通過下面命令來檢查。
bash configure
如果執行過程中有異常,就根據異常和提示信息,安裝所缺的軟件就行。如果看到下面的結果,那麼再一次恭喜你,所有依賴軟件都準備好了。
5.開始編譯
最激動人心的時刻到來了,敲入下面的命令,開始編譯吧。這個過程大概需要半個小時,耐心等候,可以稍作休息,喝杯 82 年的咖啡。
make images
見證奇蹟的圖片。看到下圖說明編譯成功啦。
6.驗證是否成功
還需要再穩一點,驗證編譯後的 java 是否可用,通過下面的命令來驗證。
./build/*/images/jdk/bin/java -version
看下圖,出現 "13-internal" 2019-09-17
字樣,我們編譯出來的 JDK13 可以用啦。
這標題起得不過分吧,上面版本日期是 2019-09-17,還不到一個月,網上相關資料也沒,就只有官方文檔了(當然也是最好的資料)。跟着步驟走,不會丟
,為了驗證這句話,還把上面的步驟在我快退休的筆記本上跑了一遍,妥妥的。
回顧
我們這篇文章就講了編譯 OpenJDK13,接下來會再寫一篇怎麼搭建 Debug JVM 環境,可以關注公眾號,期待下一篇。
推薦閱讀
了解Java線程優先級,更要知道對應操作系統的優先級,不然會踩坑
後台回復『設計模式』可以獲取《一故事一設計模式》電子書
覺得文章有用幫忙轉發&點贊,多謝朋友們!