本身編譯JDK[轉]

注:還有問題,尚未成功,哪位能幫忙解答一下 -_-~|||html

 

0、首先,要有耐心,相信會有夠折騰的;若是你會提出「爲何要本身作編譯JDK這樣無聊的事情」這樣的問題的話,仍是別往下看了,浪費時間啊。java

我是參照openjdk的這個文檔(README-builds.html)來作的,附件傳不上去我就不傳了,openjdk裏面有。node

 

一、我是再Windows上面編譯的,確定比Linux下要麻煩一些,首先訪問到 http://download.java.net/openjdk/jdk7/apache

下載openjdk-7-fcs-src-b147-27_jun_2011.zipwindows

解壓(這個版本不須要JDK Plug)。工具

 

二、下載Visual Studio 2010版本,安裝。JDK就是用它來編譯的。字體

 

三、安裝Ant,1.7.1版本以上。ui

 

四、安裝FreeType(http://www.freetype.org/download.html),是一個字體渲染庫:spa

http://download.savannah.gnu.org/releases/freetype/.net

 

五、文檔上說要安裝InfoZIP(http://www.info-zip.org/),我沒有下。

 

六、安裝Cygwin(http://www.cygwin.com/),cygwin是一個在windows平臺上運行的unix模擬環境,這樣就能夠在Windows上面執行sh腳本了,安裝的時候至少要在可選包裏面把ar、make、m四、cpio、gawk、file、zip、unzip、free、make這幾個包勾上。

 

七、安裝DirectX 9.0 SDK(http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=21416)。

 

八、寫一個腳本,專門用來配置環境變量的:

Bat代碼   收藏代碼
  1. set ALT_BOOTDIR=D:\junction\JDK\jdk1.6.0  
  2. set ALT_JDK_IMPORT_PATH=%ALT_BOOTDIR%  
  3. set ANT_HOME=D:\Software Development Environment\Build\apache-ant-1.8.2  
  4. set ALT_MSVCRNN_DLL_PATH=C:\WINDOWS\system32  
  5. set ALT_DXSDK_PATH=D:\Software Development Environment\Microsoft DirectX 9.0 SDK (Summer 2004)\  
  6. set ALT_FREETYPE_HEADERS_PATH=D:\Software Development Environment\Font\freetype-2.4.6\include  
  7. set INCLUDE=D:\junction\VS\VC\lib;%INCLUDE%  
  8. set LIB=D:\junction\VS\VC\lib;%LIB%  
  9. set LIBPATH=%LIB%  
  10. set PATH=D:\junction\VS\VC\bin;D:\junction\VS\Common7\IDE;D:\junction\Cygwin\bin;%PATH%  
  11. set BUILD_CORBA=false  
  12. set JAVA_HOME=  

 說明幾個事情:

(1)JAVA_HOME環境變量須要設爲空,這樣就取消了這個環境變量。

(2)BUILD_CORBA設爲false,是由於個人系統是中文版的,Java IDL會由於生成了中文註釋而出錯。

(3)像JDK、Cygwin等路徑最好不要有中文和空格(好比出現了空格後面make的時候會警告),可我已經安裝到帶有空格的路徑下了,怎麼辦?我想了個辦法,下載了一個M$的junction工具:http://technet.microsoft.com/zh-cn/sysinternals/bb896768.aspx,它能夠建立一個相似於文件夾映像,很像Linux下面的符號連接,這樣新建立的映像路徑設爲沒有空格的英文路徑便可。

 

九、到openjdk目錄下,執行:make sainty,這個命令能夠檢查錯誤,報錯:

Java代碼   收藏代碼
  1. Compiler-msvc.gmk:117: *** COMPILER_VERSION cannot be empty here. Stop.  

網上找到一篇文章,說明了這個狀況:http://www.java.net/node/659597

不過我直接編輯這個gmk文件,直接把COMPILER_VERSION寫入,繞過這個問題。

 

十、繼續執行make sainty,接着報錯:

Java代碼   收藏代碼
  1. sanity-rules.gmk:64: *** multiple target patterns.  Stop.  

網上找到的文章這樣說:(http://mail.openjdk.java.net/pipermail/build-dev/2007-July/000116.html) 

Java代碼   收藏代碼
  1. > Download a patched cygwin make binary from  
  2. > http://www.cmake.org/files/cygwin/make.exe  

我就下了而且替換了,接着繼續報錯,說找不到cygintl-3.dll,無奈,我去下載了cygintl-3.dll,接着報:

Java代碼   收藏代碼
  1. make.exe - 損壞的圖像  
  2. ---------------------------  
  3. 應用程序或 DLL D:\junction\Cygwin\bin\cygintl-3.dll 爲無效的 Windows 映像。請再檢測一遍您的安裝盤。   
相關文章
相關標籤/搜索