注:还有问题,还没有成功,哪位能帮忙解答一下 -_-~|||
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代码
- set ALT_BOOTDIR=D:\junction\JDK\jdk1.6.0
- set ALT_JDK_IMPORT_PATH=%ALT_BOOTDIR%
- set ANT_HOME=D:\Software Development Environment\Build\apache-ant-1.8.2
- set ALT_MSVCRNN_DLL_PATH=C:\WINDOWS\system32
- set ALT_DXSDK_PATH=D:\Software Development Environment\Microsoft DirectX 9.0 SDK (Summer 2004)\
- set ALT_FREETYPE_HEADERS_PATH=D:\Software Development Environment\Font\freetype-2.4.6\include
- set INCLUDE=D:\junction\VS\VC\lib;%INCLUDE%
- set LIB=D:\junction\VS\VC\lib;%LIB%
- set LIBPATH=%LIB%
- set PATH=D:\junction\VS\VC\bin;D:\junction\VS\Common7\IDE;D:\junction\Cygwin\bin;%PATH%
- set BUILD_CORBA=false
- 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代码
- Compiler-msvc.gmk:117: *** COMPILER_VERSION cannot be empty here. Stop.
网上找到一篇文章,说明了这个情况:http://www.java.net/node/659597
不过我直接编辑这个gmk文件,直接把COMPILER_VERSION写入,绕过这个问题。
10、继续执行make sainty,接着报错:
Java代码
- sanity-rules.gmk:64: *** multiple target patterns. Stop.
网上找到的文章这样说:(http://mail.openjdk.java.net/pipermail/build-dev/2007-July/000116.html)
Java代码
- > Download a patched cygwin make binary from
- > http://www.cmake.org/files/cygwin/make.exe
我就下了并且替换了,接着继续报错,说找不到cygintl-3.dll,无奈,我去下载了cygintl-3.dll,接着报:
Java代码
- make.exe - 损坏的图像
- ---------------------------
- 应用程序或 DLL D:\junction\Cygwin\bin\cygintl-3.dll 为无效的 Windows 映像。请再检测一遍您的安装盘。