編譯JDK1.7

1. 背景

想要一探JDK內部的實現機制,最便捷的路徑之一就是本身編譯一套JDK。java

2. 獲取JDK源碼

從http://openjdk.java.net/下載源碼,如 openjdk-6-src-b27-26_oct_2012.tar.gzlinux

解壓以後的目錄結構:jvm

3. 編譯環境

3.1 系統環境

Ubuntu 12.04,64位ui

 

3.2 準備編譯腳本

在openjdk根目錄下面建立build.sh文件,內容爲編譯的設置和編譯命令.net

build.sh線程

設置語言
export LANG=C

設置Bootstrap JDK
export ALT_BOOTDIR=/sdf/jvm/openjdk/jdk1.7.0_72

容許自動下載依賴
export ALLOW_DOWNLOADS=true

並行編譯的線程數,設置爲什麼CPU內核數量一致便可
export HOTSPOT_BUILD_JOBS=12
export ALT_PARALLEL_COMPILE_JOBS=12

export SKIP_COMPARE_IMAGES=true

使用預編譯頭文件,不加這個編譯會更慢一些
export USER_PRECOMPILED_HEADER=true

設置要編譯的內容
export BUILD_LANGTOOLS=true
export BUILD_HOTSPOT=true
export BUILD_JDK=true


BUILD_DEPLOY=false

BUILD_INSTALL=false

編譯結果所存放的路徑
export ALT_OUTPUTDIR=/sdf/jvm/openjdk/build

unset JAVA_HOME
unset CLASSPATH
unset LD_LIBRARY_PATH

開始編譯
make 2>&1 | tee $ALT_OUTPUTDIR/build.log

3.3 執行sh build.sh編譯

在編譯過程當中有不少錯誤,只能說一步步解決。3d

下面列舉我在編譯過程當中遇到的問題:xml

1. You Seem to not have installed ALSA 0.9.1 or higherblog

 

(1)清除系統原有的alsa模塊rem

sudo apt-get remove linux-sound-base alsa-base alsa-utils

(2)從新安裝alsa模塊

sudo apt-get install xmlto libasound2-dev

sudo apt-get install linux-sound-base alsa-base alsa-utils

這是一類問題,基本就是缺乏依賴,只要成功安裝就能夠了

具體參考:

https://blog.csdn.net/qq_29729577/article/details/53706551 

http://cduym.iteye.com/blog/1892416

http://caoxudong818.iteye.com/blog/1748869

2. 

解決方案:使用jdk1.7.0_72做爲ALT_BOOTDIR

3. 

https://blog.csdn.net/abountwinter/article/details/52369507

4. 編譯成功

編譯成功的結果:

編譯的輸出:

驗證:

x.參考資料

深刻理解Java虛擬機:JVM高級特性與最佳實踐

https://blog.csdn.net/qq_29729577/article/details/53706551

http://cduym.iteye.com/blog/1892416

https://blog.csdn.net/abountwinter/article/details/52369507

http://caoxudong818.iteye.com/blog/1748869

相關文章
相關標籤/搜索