個人編譯環境的爲Ubuntu 12.04 32位系統,雙核html
經過 Mercurial 代碼管理工具下載太慢,這裏選擇直接下載官網源碼包java
用於執行 Java 編譯代碼中的 Ant 腳本linux
編譯 OpenJDK 須要一個可用的 JDKubuntu
打開終端,輸入如下命令:瀏覽器
sudo apt-get install build-essential gawk m4 openjdk-6-jdk libasound2-dev libcups2-dev libxrender-dev xorg-dev xutils-dev x11proto-print-dev binutils libmotif3 libmotif-dev ant
如何找不到軟件包,能夠先執行如下命令:jvm
sudo apt-get update
這個命令將會更新可用軟件列表工具
將源碼解壓到 /home/jacend/Download/ 目錄下面,你們能夠本身選擇一個合適的目錄ui
unzip openjdk-7u40-fcs-src-b43-26_aug_2013,zip /home/jacend/Download/
解壓後再 /home/jacend/Download/ 下面會出現一個 openjdk 的源碼目錄,該目錄下包括了jdk,hotspot以及一些Java工具的源碼.net
我會將編譯的結果放在 /home/jacend/pgSoft/openjdk_7u4/build插件
mkdir /home/jacend/pgSoft/openjdk_7u4 cd /home/jacend/pgSoft/openjdk_7u4 mkdir build
咱們將在解壓的源碼包中建立一個 build_open_jdk.sh 的腳本而且賦予執行權限
cd /home/jacend/Download/openjdk/ touch build_open_jdk.sh sudo chmod +x build_open_jdk.sh sudo gedit build_open_jdk.sh
腳本中輸入如下內容
#語言選項 export LANG=C ## Bootstarp JDK 的安裝路徑,也就是咱們安裝的 openJDk 6 的根目錄 export ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk-i386 #容許自動下載依賴 export ALLOW_DOWNLOADS=true #並行編譯的線程數,設置與CPU內核數量一致,個人筆記本爲雙核CPU,此項能夠提升編譯速度 export HOTSPOT_BUILD_JOBS=6 export ALT_PARALLEL_COMPILE_JOBS=6 export SKIP_COMPARE_IMAGES=true #使用預編譯頭文件,不加這個編譯會慢不少 export USE_PRECOMPLIED_HEADER=true #要編譯的內容 export BUILD_LANGTOOLS=true export BUILD_HOTSPOT=true export BUILD_JDK=true #把它設置爲 false 能夠避開 javaws 和瀏覽器插件之類的部分的 build BUILD_DEPLOY=false #把它設置爲 false 就不會 build 出安裝包,由於安裝包中有些奇怪的依賴 #但即使不build出它已經能夠獲得完成的JDK映像了,因此仍是不 build 了 export BUILD_INSTALL=false #編譯結果所存在的路徑 export ALT_OUTPUTDIR=/home/jacend/pgSoft/openjdk_7u4/build #這兩個編譯變量必須去掉,否則編譯會出問題 unset JAVA_HOME unset CLASSPATH #檢查設置是否正確 make sanity make 2>&1 |tee $ALT_OUTPUTDIR/build.log
cd /home/jacend/Download/openjdk/ sh ./build_open_jdk.sh
列舉一下編譯過程的錯誤,供你們參考,你們能夠預先處理了再執行編譯腳本
error: "__LEAF" redefined [-Werror]
碰到這個錯誤能夠 參考 在這個環境下應該不會報這個錯誤
JVM_FindClassFromCaller
修改文件:/home/jacend/Download/openjdk/hotspot/make/linux/Makefile 註釋掉包含test_gamma字樣的全部行便可
Error: time is more than 10 years from present: 1104530400000
進入解壓後openJDk目錄,找到CurencyData.properties,將全部涉及到時間修改成10年以內的時間,例如將2004-01-13-20-00-00 修改爲 2016-01-13-20-00-00
cd /home/jacend/Downloads/openjdk/jdk/src/share/classes/java/util sudo gedit CurrencyData.properties