閱讀552 返回首頁    go 阿裏雲 go 技術社區[雲棲]


編繹OpenJDK

因為對於Java裏的vtable,itable,有個地方還沒搞明白,不得已去下個OpenJDK來研究下。

本來很不願意去編繹OpenJDK,因為很有可能做的隻是無用功,還有可能要去解決各種找不到鏈接庫的問題。

不過,沒想到雖然有些麻煩,但是出人意料的順利。


環境:ubuntu 13.10,已經安裝了oracle jdk7。


首先下載:

wget https://download.java.net/openjdk/jdk7u40/promoted/b43/openjdk-7u40-fcs-src-b43-26_aug_2013.zip

再用unzip解壓。

unzip openjdk-7u40-fcs-src-b43-26_aug_2013.zip


在解壓後的文件夾裏,可以發現有一個“README-builds.html”的文件,這個就是編繹的說明了。

或者在網上也有:
https://hg.openjdk.java.net/jdk7/build/raw-file/tip/README-builds.html#ubuntu

裏麵雖然關於ubuntu的最後是9.04版本,不過可以對照著畫葫蘆:

安裝依賴相關的包:

sudo aptitude build-dep openjdk-7

因為我已經安裝了oracle jdk,所以就沒有再安裝openjdk7了,事實證明,不用安裝openjdk7也可以。


據README裏的說明,先用下麵的命令來檢查下:

make sanity

如果提示下麵的錯誤:

WARNING: LANG has been set to zh_CN.UTF-8, this can cause build failures. 
         Try setting LANG to 'C'. 
則先執行:

export LANG=C
如果提示JAVA_HOME已經設置了:

ERROR: Your JAVA_HOME environment variable is set.  This will 
       most likely cause the build to fail.  Please unset it 
       and start your build again. 
則用unset取消:
unset JAVA_HOME
還要設置下這個環境變量:

export ALT_BOOTDIR=/usr/lib/jvm/java-7-oracle
最後,可以用make all來編繹了。不過編繹一次太慢了。還有下麵的這些編繹選項,在Makefile裏可以看到:

--- Common Targets ---  \n\
all               -- build the core JDK (default target) \n\
help              -- Print out help information \n\
check             -- Check make variable values for correctness \n\
sanity            -- Perform detailed sanity checks on system and settings \n\
fastdebug_build   -- build the core JDK in 'fastdebug' mode (-g -O) \n\
debug_build       -- build the core JDK in 'debug' mode (-g) \n\
clean             -- remove all built and imported files \n\
clobber           -- same as clean \n\

可以考慮用make fastdebug_build來快速編繹。

最後生成的文件當然在build文件夾下了。

對於debug版,可以用下麵的命令來查看編繹出來的java示持哪些JVM的配置項:

./java -XX:+AggressiveOpts -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsFinal -XX:+PrintFlagsWithComments -version

如果是非debug,則可以使用下麵的命令來輸出可用的JVM配置項:

./java -XX:+AggressiveOpts -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsFinal -version



最後更新:2017-04-03 14:54:25

  上一篇:go weblogic中設置數據源的注意點
  下一篇:go 劍指Offer之反轉鏈表