深入理解JVM原理之編譯openjdk7
阿新 • • 發佈:2022-04-29
Java虛擬機種類很多例如:HotSpot 丶 JRockit 丶 J9等
我們一般用的就是HotSpot,如果我們電腦上裝了JDK,可以執行java -version檢視相關資訊
java -version
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)
之前想著編譯openjdk7,但是試過windows系統,linux系統,各種不如意,尤其是windows系統操作起來比linux更復雜,最後不得不放棄,centos試過,redhat也試過,各種不行 ,簡直要吐血,
不過蒼天不負有心人,經過一週的不斷嘗試,終於使用Ubuntu16.04.3搞定.
準備階段:
①.需要安裝的:使用 apt-get install 命令
build-essential
gawk
libasound2-dev
libcups-dev
libxrender-dev
xorg-dev
ant(1.7以上)
libxtst-dev
libxi-dev
libxt-dev
②.openjdk7 , jdk6
我使用的jdk6為:jdk-6u45,
③.將CurrencyData.properties檔案中的日期一定要改成10年內,
否則在編譯過程中會報錯從而導致編譯失敗:
Error: time is more than 10 years from present: 1136059200000
檔案位置:
/usr/openjdk/jdk/src/share/classes/java/util/CurrencyData.properties
開始編譯:
①.進入openjdk目錄下執行make sanity命令若出現如下提示表示檢查通過:
sanity check passed.
②.
執行如下命令:
export LANG=C export ALT_BOOTDIR="/usr/local/jdk6" export ALT_JDK_IMPORT_PATH="/usr/local/jdk6" export BUILD_LANGTOOLS=true export BUILD_HOTSPOT=true export BUILD_JDK=true export SKIP_COMPARE_IMAGES=true export SKIP_DEBUG_BUILD=false export SKIP_FASTDEBUG_BUILD=true export DEBUG_NAME=debug export USE_PRECOMPILED_HEADER=true export ARCH_DATA_MODEL=64 export HOTSPOT_BUILD_JOB=4 export ALT_PARALLEL_COMPILE_JOBS=4 BUILD_DEPLOY=false BUILD_INSTALL=false export ALT_OUTPUTDIR=/usr/local/openjdk/build export ALLOW_DOWNLOADS=true unset JAVA_HOME unset CLASSPATH make DISABLE_HOTSPOT_OS_VERSION_CHECK=OK
如上命令建議放入到一個可執行檔案中
③.靜靜的等待即可(時間有點漫長,大概三四十分鐘左右,你可以選擇喝杯咖啡,聽首音樂放鬆一下)
④.可以看到編譯開始及結束的時間,恭喜編譯通過.
>>>Finished making images @ Tue Dec 12 22:16:37 CST 2017 ...
make[2]: Leaving directory '/usr/local/openjdk/jdk/make'
########################################################################
##### Leaving jdk for target(s) sanity all docs images #####
########################################################################
##### Build time 00:34:22 jdk for target(s) sanity all docs images #####
########################################################################
#-- Build times ----------
Target debug_build
Start 2017-12-12 21:22:34
End 2017-12-12 22:16:37
00:04:43 corba
00:11:40 hotspot
00:00:49 jaxp
00:01:05 jaxws
00:34:22 jdk
00:01:23 langtools
00:54:03 TOTAL