Ubuntu12.4-http://mirrors.163.com/ubuntu-releases/12.04/ --須要安裝純英文版,避免中文引發沒必要要的麻煩
OpenJDK7-https://download.java.net/openjdk/jdk7/java
tips:因爲OpenJDK部分代碼使用java語言編寫,因此須要一個編譯好的jdk來編譯(。。。。禁止套娃)
BootstrapJDK-jdk-7u80-linux-x64.tar.gz(能夠到Oracle下載)linux
這裏使用Oracle VM VirtualBox做爲虛擬機演示ubuntu
1.安裝庫 sudo apt-get install build-essential gawk m4 libasound2-dev libcups2-dev libxrender-dev xorg-dev xutils-dev x11proto-print-dev binutils libmotif3 libmotif-dev ant libxt-dev libxtst-dev 若是一次安裝不成功,請多試幾回,或者更換源 2.解壓OpenJDK和BootstrapJDK到相應目錄下 OpenJDK:/home/pumpkin/j7/openjdk BootstrapJDK:/home/pumpkin/j7/jdk1.7 由於jdk7年代已久,須要對openjdk的文件作些許修改: openjdk/jdk/src/share/classes/java/util/CurrencyData.properties文件,將其中全部的10年前日期改成10年之內的,不然會報錯:time is more than 10 years from present
在OpenJDK目錄內建立此make.sh腳本,修改其中的兩個路徑
,並賦予執行權限瀏覽器
#語言選項,這個必須設置,不然編譯好後會出現一個HashTable的NPE錯 export LANG=C #Bootstrap JDK的安裝路徑。必須設置。 export ALT_BOOTDIR=/home/pumpkin/j7/jdk1.7 #容許自動下載依賴 export ALLOW_DOWNLOADS=true #並行編譯的線程數,設置爲和CPU內核數量一致便可 export HOTSPOT_BUILD_JOBS=2 export ALT_PARALLEL_COMPILE_JOBS=2 #比較本次build出來的映像與先前版本的差別。這個對咱們來講沒有意義,必須設置爲false,不然sanity檢查會報缺乏先前版本JDK的映像。若是有設置dev或者DEV_ONLY=true的話這個不顯式設置也行。 export SKIP_COMPARE_IMAGES=true #使用預編譯頭文件,不加這個編譯會更慢一些 export USE_PRECOMPILED_HEADER=true #要編譯的內容 export BUILD_LANGTOOLS=true #export BUILD_JAXP=false #export BUILD_JAXWS=false #export BUILD_CORBA=false export BUILD_HOTSPOT=true export BUILD_JDK=true #要編譯的版本 #export SKIP_DEBUG_BUILD=false #export SKIP_FASTDEBUG_BUILD=true #export DEBUG_NAME=debug #把它設置爲false能夠避開javaws和瀏覽器Java插件之類的部分的build。 BUILD_DEPLOY=false #把它設置爲false就不會build出安裝包。由於安裝包裏有些奇怪的依賴,但即使不build出它也已經能獲得完整的JDK映像,因此仍是別build它好了。 BUILD_INSTALL=false #編譯結果所存放的路徑 export ALT_OUTPUTDIR=/home/pumpkin/j7/pumpkinJDK7 #這兩個環境變量必須去掉,否則會有很詭異的事情發生(我沒有具體查過這些「」詭異的事情」,Makefile腳本檢查到有這2個變量就會提示警告「) unset JAVA_HOME unset CLASSPATH make 2>&1 | tee $ALT_OUTPUTDIR/build.log
openjdk#sh make.sh
我在虛擬機中編譯,大約須要23min
ui
編譯好的java -version 虛擬機信息中心會帶有用戶信息
.net