全網最新最簡單的 OpenJDK13 代碼編譯

個人博客原文:全網最新最簡單的 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 環境,可以關注公衆號,期待下一篇。

推薦閱讀

全網最新最簡單的 OpenJDK13 代碼編譯

瞭解Java線程優先級,更要知道對應操作系統的優先級,不然會踩坑

線程最最基礎的知識

老闆叫你別阻塞了

吃個快餐都能學到串行、並行、併發

泡一杯茶,學一學同異步

進程知多少?

設計模式看了又忘,忘了又看?

後臺回覆『設計模式』可以獲取《一故事一設計模式》電子書

覺得文章有用幫忙轉發&點贊,多謝朋友們!

LieBrother

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章