自己编译JDK[转]

注:还有问题,还没有成功,哪位能帮忙解答一下 -_-~|||

0、首先,要有耐心,相信会有够折腾的;如果你会提出“为什么要自己做编译JDK这样无聊的事情”这样的问题的话,还是别往下看了,浪费时间啊。

我是参照openjdk的这个文档(README-builds.html)来做的,附件传不上去我就不传了,openjdk里面有。

1、我是再Windows上面编译的,肯定比Linux下要麻烦一些,首先访问到 http://download.java.net/openjdk/jdk7/

下载openjdk-7-fcs-src-b147-27_jun_2011.zip

解压(这个版本不需要JDK Plug)。

2、下载Visual Studio 2010版本,安装。JDK就是用它来编译的。

3、安装Ant,1.7.1版本以上。

4、安装FreeType(http://www.freetype.org/download.html),是一个字体渲染库:

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

5、文档上说要安装InfoZIP(http://www.info-zip.org/),我没有下。

6、安装Cygwin(http://www.cygwin.com/),cygwin是一个在windows平台上运行的unix模拟环境,这样就可以在Windows上面执行sh脚本了,安装的时候至少要在可选包里面把ar、make、m4、cpio、gawk、file、zip、unzip、free、make这几个包勾上。

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

8、写一个脚本,专门用来配置环境变量的:

Bat代码  收藏代码
  1. set ALT_BOOTDIR=D:junctionJDKjdk1.6.0  
  2. set ALT_JDK_IMPORT_PATH=%ALT_BOOTDIR%  
  3. set ANT_HOME=D:Software Development EnvironmentBuildapache-ant-1.8.2  
  4. set ALT_MSVCRNN_DLL_PATH=C:WINDOWSsystem32  
  5. set ALT_DXSDK_PATH=D:Software Development EnvironmentMicrosoft DirectX 9.0 SDK (Summer 2004)  
  6. set ALT_FREETYPE_HEADERS_PATH=D:Software Development EnvironmentFontfreetype-2.4.6include  
  7. set INCLUDE=D:junctionVSVClib;%INCLUDE%  
  8. set LIB=D:junctionVSVClib;%LIB%  
  9. set LIBPATH=%LIB%  
  10. set PATH=D:junctionVSVCin;D:junctionVSCommon7IDE;D:junctionCygwinin;%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下面的符号链接,这样新创建的映像路径设为没有空格的英文路径即可。

9、到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写入,绕过这个问题。

10、继续执行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:junctionCygwinincygintl-3.dll 为无效的 Windows 映像。请再检测一遍您的安装盘。   
原文地址:https://www.cnblogs.com/tiny-kong/p/3980261.html