Windows下以JRL源码构建Oracle JDK 6 update 23

之所以要重新编译Jdk的原因请参考:http://hllvm.group.iteye.com/group/topic/43576,下面就说下在windows下编译SunJdk(OracleJdk)6u23的过程。

?

一:下载源码。

下载jdk-6u23-fcs-src-b05-jrl-12_nov_2010.jar、jdk-6u23-fcs-bin-b05-jrl-12_nov_2010.jar?

http://www.java.net/download/jdk6/6u23/promoted/b05/jdk-6u23-fcs-src-b05-jrl-12_nov_2010.jar

http://www.java.net/download/jdk6/6u23/promoted/b05/jdk-6u23-fcs-bin-b05-jrl-12_nov_2010.jar

下载完成之后分别执行

java -jar?jdk-6u23-fcs-src-b05-jrl-12_nov_2010.jar

java -jarjdk-6u23-fcs-bin-b05-jrl-12_nov_2010.jar?

分别安装,然后合并到一起。

?

二:配置编译环境:

1、安装MicroSoft Visual Studio .NET 2003 Professional。下载地址:http://pan.baidu.com/s/1c0rPbFU

2、安装MicroSoft DirectX 9。下载地址:http://pan.baidu.com/s/1nPvbC

3、安装Microsoft Layer for Unicode (MSLU)。下载地址:http://www.microsoft.com/en-us/download/details.aspx?id=4237

4、安装cygwin,下载地址:http://cygwin.com/setup-x86_64.exe,安装CYGWIN时不能直接默认安装,因为表1-2中所示的工具都不会进行默认安装,但又是编译过程中需要的,因此要在图1-6的安装界面中进行手工选择。?

  表1-2 需要手工选择安装的CYGWIN工具?

文件名 分类 描述
ar.exe Devel binutils The GNU assembler, linker and binary utilities
make.exe Devel make The GNU version of the ‘make‘ utility built for CYGWIN.
m4.exe Interpreters m4 GNU implementation of the traditional Unix macro processor
cpio.exe Utils cpio A program to manage archives of files
gawk.exe Utils awk Pattern-directed scanning and processing language
file.exe Utils file Determines file type using ‘magic‘ numbers
zip.exe Archive zip Package and compress (archive) files
unzip.exe Archive unzip Extract compressed files in a ZIP archive
free.exe System procps Display amount of free and used memory in the system

?

注意:cygwin自带的make.exe的版本是4.0或者3.81,这两个版本在windows下会不识别C:,需要替换成make3.82版本。

?

下载地址:http://pan.baidu.com/s/1mgNwO6s 下载后重命名为make.exe替换%CYGWIN_HOME%/bin/make.exe

?

安装完毕之后将cygwin下的bin目录加入到PATH环境变量。

?

?5、下载freetype,下载地址:http://pan.baidu.com/s/1sjlsUvj

?

6、准备一个Bootstrap Jdk(SunJdk1.6即可)。

?

7、msvcrt.dll 下载地址:http://pan.baidu.com/s/1bnfFNVx

?

三:进行编译?

首先删除JAVA_HOME、CLASSPATH环境变量,然后执行%VS2003_HOME%/Vc7/bin/vcvars32.bat设置环境变量

注意:为了保险起见执行.bat文件后手动查看下PATH环境变量(我本机的如下):

C:\Program Files (x86)\Microsoft Visual Studio .NET 2003\Vc7\bin;C:\Program Files (x86)\Microsoft Visual Studio .NET 2003\Common7\IDE;C:\Program Files (x86)\Microsoft Visual Studio .NET 2003\Common7\Tools\Bin;C:\Program Files (x86)\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin;C:\cygwin64\bin

确保PATH环境变量中cygwin的bin目录在vs2003后面。

做完这些之后开始正式编译:

打开cmd,执行以下命令(可以将下列命令copy到.bat文件下,dos下直接执行):

?

#你的Bootstrap Jdk的目录

set ALT_BOOTDIR=C:/jdk1.6.0_45

#你的Bootstrap Jdk的目录

set ALT_JDK_IMPORT_PATH=C:/jdk1.6.0_45

#你的freetype的include目录

set ALT_FREETYPE_HEADERS_PATH=C:/compileSunJdk6u23/freetype/include

#你的freetype的bin目录

set ALT_FREETYPE_LIB_PATH=C:/compileSunJdk6u23/freetype/bin

#你的MicrosoftDirectX9.0的目录

set ALT_DXSDK_PATH=C:/compileSunJdk6u23/MicrosoftDirectX9.0

#你的msvcrt.dll文件所在的目录

set ALT_MSVCRT_DLL_PATH=C:/compileSunJdk6u23/msvcr

#你的vc的编译器目录

set ALT_COMPILER_PATH=C:/Program Files (x86)/Microsoft Visual Studio .NET 2003/Vc7/bin

#msdevtools的目录

set ALT_MSDEVTOOLS_PATH=C:/Program Files (x86)/Microsoft Visual Studio .NET 2003/Common7/Tools

#你的MicrosoftLayerForUnicode目录

set ALT_UNICOWS_DLL_PATH=C:/compileSunJdk6u23/MicrosoftLayerForUnicode

#你的MSVCDIR目录

set MSVCDIR=C:/Program Files (x86)/Microsoft Visual Studio .NET 2003/Vc7

#设置INCLUDE

set INCLUDE=C:/Program Files (x86)/Microsoft Visual Studio .NET 2003/Vc7/include;C:/Program Files (x86)/Microsoft Visual Studio .NET 2003/Vc7/PlatformSDK/Include;C:/Program Files (x86)/Microsoft Visual Studio .NET 2003/Vc7/atlmfc/include

#设置LIB

set LIB=C:/Program Files (x86)/Microsoft Visual Studio .NET 2003/Vc7/lib;C:/Program Files (x86)/Microsoft Visual Studio .NET 2003/Vc7/PlatformSDK/Lib;C:/Program Files (x86)/Microsoft Visual Studio .NET 2003/Vc7/atlmfc/lib

?

设置完这些环境变量之后输入bash命令进入bash下,然后cd 到%JDK_SOURCE_CODE_HOME%/control/make/下,检查下依赖的环境是否全部安装完毕:

?

make dev-sanity ?BUILD_DEPLOY=false SKIP_COMPARE_IMAGES=true ?HOTSPOT_BUILD_JOBS=6 ?COMPILER_VERSION=VS2003

?

如果检查没有问题的话会出现以下字样:

Sanity?check?passed. ?

?

然后在执行最后的make命令之前,注意有两个坑:

1、需要将C:/Windows/System32/find.exe 暂时移动到其他目录下,避免与cygwin/bin/find.exe冲突,造成在编译过程中发生错误。

2、需要将将%VS2003_HOME%Common7\Tools\bin 中的rc.exe copy到 %VS2003_HOME%Common7\Tools下一份,因为在执行过程中发现

会报/bin/sh: C:/PROGRA~2/MICROS~2.NET/Common7/Tools/rc: No such file or directory的错误。

?

最后执行:

?

make dev ?BUILD_DEPLOY=false SKIP_COMPARE_IMAGES=true ?HOTSPOT_BUILD_JOBS=6 ?COMPILER_VERSION=VS2003

?

执行大概会消耗40分钟左右,耐心等待下。

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。