ubuntu編譯並調試OpenJDK8源碼實踐

最近打算研究一下 jvm 相關的知識,因此想編譯 OpenJDK 的源碼,一直在Mac上面編譯,可是老是出現莫名其妙的error,還找不到有效的解決方式,因此仍是進入 Ubuntu 下面進行編譯,雖然中間也出現一個問題,可是很快找到了解決方案,大概總共用了 6 分鐘左右就編譯了 OpenJDK8 的源碼,下面記錄一下實踐過程,僅供參考!java

相關環境

  1. Ubuntu16.04
  2. OpenJDK8.0源碼
  3. oraclejdk1.7.0.80

上面即是本次的編譯環境,Ubuntu 是我在 Mac 下面用 virtualbox 建立的,固然也可以使用真正的 Ubuntu 環境。linux

  • 下載 OpenJDK8.0 源碼

首先咱們得下載 OpenJDK8.0 的源碼,一種方式是經過 hg 來下載,這種方式取決於網絡速度,很慢很慢,有的時候還會中止,還有一種方式就是直接下載源碼的壓縮包,這裏咱們使用第二種方式 openjdk-8u40-src-b25-10_feb_2015.7z ,下載後咱們把它解壓到一個目錄下面。git

  • 安裝部分依賴包
sudo apt-get install libx11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev
sudo apt-get install libcups2-dev
sudo apt-get install libfreetype6-dev
sudo apt-get install libasound2-dev複製代碼
  • 編譯前檢查

咱們進入剛剛解壓後的 OpenJDK8.0 根目錄,輸入如下命令:github

bash configure複製代碼

當出現如下內容時就能夠進行編譯了shell

  • 開始編譯
sudo  make複製代碼

等待大概 7~8 分鐘就有就能編譯好了。bash

  • 問題解決

若是出現以上的 error 的話,到
/openjdk/build/linux-x86_64-normal-server-release/下面,找到 Makefile 這個文件,打開它,找到下面這幾行代碼網絡

SUPPORTED_OS_VERSION = 2.4% 2.5% 2.6% 3% 4%
OS_VERSION := $(shell uname -r)
EMPTY_IF_NOT_SUPPORTED = $(filter $(SUPPORTED_OS_VERSION),$(OS_VERSION))複製代碼

SUPPORTED_OS_VERSION 後面增長 4%,而後保存退出,從新執行編譯命令。oracle

  • 結果校驗

當咱們編譯成功後,咱們得檢驗一下結果如何,進入到下面這個目錄下面 eclipse

/openjdk/build/linux-x86_64-normal-server-release/jdk/bin複製代碼

在 bin 目錄下面,執行jvm

./java -version複製代碼

正常狀況下,咱們編譯後的 openjdk ,會帶有咱們用戶名的,以下所示

而咱們本機一開始安裝的 jdk 則是

經過以上幾個步驟,咱們便完成了OpenJDK8的編譯。

  • eclipse調試

咱們首先下載 Eclipse IDE for C/C++ Developers 這個版本的 eclipse ,這個版本能夠到官網去查找而後下載。咱們打開 eclipse 後,選擇 import ,依次選擇 C/C++ 下面的 Existing Code as makefile Project 內容

點擊 next ,進入到下個頁面,選擇 Linux GCC ,而後導入編譯的 OpenJDK8 的工程便可。

工程目錄。


關於做者

github: github.com/crazyandcod…
博客: crazyandcoder.github.io
掘金:juejin.im/user/56b96a…

相關文章
相關標籤/搜索