編譯前準備
安裝hg版本控制
yum install -y hg
安裝依賴庫
yum install -y "Development Tools"
yum install -y gcc g++ kernel-devel
yum? -y install libXtst-devel libXt-devel libXrender-devel libXi-devel
準備JDK
為編譯虛擬機,首先必須獲得虛擬機的源碼,大家可以使用下面的命令獲取JDK10的源碼。
推薦使用較新的版本,因為老版本的編譯腳本可能在某平台上存在問題。
hg clone http://hg.openjdk.java.net/jdk10/jdk10
準備一個BootJDK。Boot JDK用於OpenJDK編譯的執行。這裏用到的是JDK8,也推薦各位使用JDK8作為JDK10的Boot JDK
準備編譯
準備就緒之後,就可以開始編譯了。
進入解壓後的openjdk目錄:
執行configure腳本配置編譯選項,本人的配置如下:
bash configure --with-debug-level=slowdebug --enable-dtrace --with-jvm-variants=server --with-target-bits=64 --with-memory-size=3000 --disable-warnings-as-errors --with-boot-jdk=/usr/local/src/jdk1.8 --with-native-debug-symbols=internal
配置成功後會顯示下面的信息:
編譯JVM
下載鏡像文件
bash get_source.sh
編譯
make images
此次編譯將會生成debug版本的虛擬機,編譯的過程可能會花費比較長的時間,一般來説,編譯一個版本可能要15-45分鐘的,視計算機性能而定。
當編譯成功後,會有以下輸出:
進入build目錄,可以看到編譯的結果,下面顯示了debug版本的編譯結果:
有了debug版本的虛擬機,就可以使用gdb對虛擬機進行調試了。
Java虛擬機調試
進入build/linux-x86_64-normal-server-slowdebug/jdk/bin/目錄,用gdb啓動Java可執行程序,隨後就進到了gdb命令行環境:
gdb -args ./java -version
在main函數中打斷點
略。。。