天天看點

Linux 下編譯自己的 OpenJDK7 包括JVM和JDK API

原文:http://blog.csdn.net/kindazrael/article/details/7266314

[plain]  view plain copy  

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