原文:http://blog.csdn.net/kindazrael/article/details/7266314
[plain] view plain copy
- 1.首先去 這裡 http://download.java.net/openjdk/jdk7/ 下載下傳OpenJDK7的源碼zip包
- 2. 簡要介紹下OpenJDK7中的目錄
- hotspot: 放有OpenJDK Hotspot Virtual Machine 的源代碼和make檔案
- langtools: 放有OpenJDK 的javac 等工具的源代碼和make檔案
- cobra: 放有OpenJDK Cobra 的源代碼和make檔案
- jaxws: 放有OpenJDK JAXWS 的相關資訊和make檔案, 具體的源代碼再編譯時會下載下傳
- jaxp: 放有OpenJDK JAXP 相關資訊和make檔案,具體的源代碼再編譯時會下載下傳
- jdk: 放有OpenJDK runtime libraries 的源代碼和make檔案
- 直接OpenJDK 目錄下有整個OpenJDK 的make檔案
- 3. 檢查系統的工具版本,以下配置基于OpenJDK7
- 3.1 GNU make 3.81或更高版本
- 3.2 ANT 1.7.1或更高版本
- 3.3 Sun 的BootstrapJDK6 update14或更高版本(雖然有些奇怪,但是因為編譯這些Java代碼需要一個可用的JDK)
- 3.4 GNU gcc 4.3或更高版本
- 3.5 ZIP 2.2或更高版本
- 3.6 FreeType 2.3或更高版本 (下載下傳位址http://download.savannah.gnu.org/releases/freetype/ ,下載下傳後解壓)
- 3.7 Advanced Linux Sound Architecture(ALSA) 0.9.1或更高版本(下載下傳位址http://www.alsa-project.org/main/index.php/Download)
- 4. 如果怕麻煩可以使用相關指令來安裝依賴包
- Fedora: yum-builddep java-1.6.0-openjdk
- Debian: aptitude build-dep openjdk-6
- Ubuntu: sudo aptitude build-dep openjdk-6
- 其它具體的可以參考OpenJDK中的README-builds.html
- 5. 環境工具設定好後了運作以下指令以設定或取消環境變量
- export alt"> export ALT_BOOTDIR=/usr/java/jdk1.6.0_30/
- export ALLOW_DOWNLOADS=true
- export USE_PRECOMPILED_HEADER=true
- export SKIP_DEBUG_BUILD=false
- export SKIP_FASTDEBUG_BUILD=true
- export DEBUG_NAME=debug
- unset CLASSPATH
- unset JAVA_HOME
- 6. 到OpenJDK目錄下運作 make sanity 進行檢測 如果輸出如下證明OpenJDK 編譯環境檢測沒有問題
- PREVIOUS_RELEASE_IMAGE =
- ALT_PREVIOUS_RELEASE_IMAGE =
- Sanity check passed.
- 如果是下面這樣證明 環境依然有問題, 按照提示的WARNING 和 ERROR進行修改 直到檢測通過
- 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.
- Exiting because of the above error(s).
- make: *** [post-sanity] Error 1
- 7. 檢測通過了在OpenJDK目錄下運作
- make clean
- make
- 8. 注意事項
- 8.1 保持所有指令是在同一個使用者下運作的而且這個使用者麼還有JAVA_HOME 等環境變量
- 這樣編譯程式才能正确的找到環境變量和不會有權限沖突
- 8.2 OpenJDK 編譯可能需要些時間,不要慌張
- 8.3 要有ALLOW_DOWNLOADS=true。否則編譯jaxp的時候會出錯,因為jaxp的源代碼是臨時下載下傳的
- 8.3 OpenJDK 目錄下的README-builds.html網頁文檔可以提供很多幫助.
- 9. 編譯完成
- -- Build times ----------
- Target debug_build
- Start 2012-02-18 21:09:17
- End 2012-02-18 21:54:06
- 00:01:04 corba
- 00:20:53 hotspot
- 00:03:57 jaxp
- 00:04:14 jaxws
- 00:14:15 jdk
- 00:00:26 langtools
- 00:44:49 TOTAL
- 在OpenJDK目錄下有個build檔案夾是編譯的output檔案夾
- [email protected]:~/Tech/openjdk$ cd build/
- [email protected]:~/Tech/openjdk/build$ ll
- total 16
- drwxr-xr-x 4 azrael azrael 4096 Feb 18 20:37 ./
- drwxr-xr-x 12 azrael azrael 4096 Feb 18 20:35 ../
- drwxr-xr-x 27 azrael azrael 4096 Feb 18 21:53 linux-i586/
- drwxr-xr-x 26 azrael azrael 4096 Feb 18 21:08 linux-i586-debug/
- azra[email protected]:~/Tech/openjdk/build/linux-i586/bin$ ./java -version
- openjdk version "1.7.0-internal-debug"
- OpenJDK Runtime Environment (build 1.7.0-internal-debug-azrael_2012_02_18_20_37-b00)
- OpenJDK Server VM (build 21.0-b17-jvmg, mixed mode)