0.说明
在Windows平台编译并调试
OpenJDK7相对比较复杂,感兴趣的读者能够先按照本文的步骤在虚拟机环境下进行,而后再转移到物理机上。
或则,将虚拟机环境下构建好了的Cygwin和
OpenJDK7工程打包到物理机上,而后配置相应的环境变量便可。
本文是在VMware Workstation的Windows 7 Ultimate en x86环境下编译并调试
OpenJDK7u40的32bit版本。
本文全部的编译构建工做都将在C:\BuildJDK目录下完成,读者在具体的编译过程当中,可根据实际的物理机状况进行调整。
1.安装DXSDK
安装DXSDK_Jun10.exe,本文将其安装到C:\BuildJDK\MSDXSDK\June2010目录中:
2.安装Visual Studio 2010
根据OpenJDK7u40的编译指南说明,
OpenJDK7
须要使用VS2010提供的编译器,所以本文选择安装en_visual_studio_2010_ultimate_x86_dvd_509116.iso
本文在虚拟环境下选择将en_visual_studio_2010_ultimate_x86_dvd_509116.iso安装到默认的路径:C:\Program Files\Microsoft Visual Studio 10.0
3.安装JDK
根据OpenJDK7u40的编译指南说明,编译
OpenJDK7
须要提供JDK6的Release版本,但因为本文所编译的
OpenJDK7u40版本比较新,所以
也能够选择JDK7的某个Release版本,本文选择
jdk-7u51-windows-i586.exe做为
OpenJDK7u40
的Bootstrap JDK,将JDK7u50安装到C:\BuildJDK\JDK\Java目录中:
4.安装Ant
编译
OpenJDK7
须要Ant 1.7.1或者以后的一个Release版本,本文选择apache-ant-1.9.4-bin.zip,将其解压,并重命名为Ant,移动到
C:\BuildJDK目录中:
5.安装Cygwin
在Windows下编译
OpenJDK7
,须要一款Uninx命令行工具Cygwin,本文选择安装Cygwin-x86.exe,
OpenJDK7u40
的编译指南中要求必须安装以下包:
本文将Cygwin安装到C:\BuildJDK\Cygwin\cygwin目录中,将安装过程当中的下载文件存放到C:\BuildJDK\Cygwin\Install目录中:
安装过程的几张截图以下:
安装过程当中的包,须要本身去查找安装,好比须要安装libintl3这个包,在Search中输入libintl3便可搜索到:
6.编译make
解压
make-3.82.tar.gz文件,重命名为Make,并移动到C:\BuildJDK目录中:
启动一个CMD命令行工具,cd到C:\BuildJDK\Make目录中:
配置Cygwin环境变量:
set PATH=C:\BuildJDK\Cygwin\cygwin\bin;%PATH%
启动bash
并编译
make-3.82:
bash
./configure
make
开始执行./configure:
./configure执行完毕:
开始执行make:
执行make完毕:
make成功后,会在
C:\BuildJDK\Make中生成make.exe文件:
7.编译FreeType
Cygwin中提供的Freetype版本比较低,所以须要较高版本的Freetype,本文选择用VS2010编译freetype-2.5.0.1.tar.gz,编译步骤以下:
解压freetype-2.5.0.1.tar.gz到
C:\BuildJDK文件夹,并重命名为
FreeType:
用VS2010打开
C:\BuildJDK\FreeType\builds\win32\vc2010目录下FreeType的工程文件freetype.sln
:
编译生成lib文件,配置以下:
•Configuration -> Release Multithreaded
•Platform -> win32
•Target Name -> rename to "freetype"
•Platform Toolset -> v100
配置完成后Build生成freetype.lib:
更改配置生成dll:
配置完成后Build(不是Rebuild)生成freetype.dll:
编译完成后,会在C:\BuildJDK\FreeType\objs\win32\vc2010目录中生成freetype.lib和freetype.dll文件:
8.解压OpenJDK
解压openjdk-7u40-fcs-src-b43-26_aug_2013.zip文件,重命名为OpenJDK,并移动到C:\BuildJDK目录中:
9.配置Drops文件:JAXP和JAX_WS
在C:\BuildJDK\OpenJDK目录下新建
drops目录,将下面四个文件拷贝到
C:\BuildJDK\OpenJDK\drops目录中:
•jaxp-1_4_5-unittests.zip
•jaxp145_01.zip
•jdk7-jaxws2_2_4-b03-2011_05_27.zip
•jdk7-jaf-2010_08_19.zip
10.配置msvcr100.dll文件
将C:\Program Files\Microsoft Visual Studio 10.0\VC\redist\x86\Microsoft.VC100.CRT目录拷贝一份到
C:\BuildJDK目录中,并重命名为
MSVCR100:
11.配置环境变量
打开一个CMD命令行窗口,cd到C:\BuildJDK\OpenJDK目录中:
执行
"C:\Program Files\Microsoft Visual Studio 10.0\Common7\Tools\vsvars32.bat",设置环境变量:
执行set > C:/env.txt命令,将当前CMD中的环境变量信息导出到
C:\env.txt文件中:
打开
C:\env.txt文件,仅仅保留其中的PATH、INCLUDE、LIB、
LIBPATH、WindowsSdkDir
,其他信息所有删除:
设置Path环境变量:
在上述env.txt文件中,在INCLUDE、LIB、LIBPATH、Path、WindowsSdkDir
变量前面添加SET命令:
在上述env.txt文件中的末尾增长以下信息,将make、msvcr100.dll、ant、Cygwin、Java添加到Path变量中(
C:\BuildJDK\Make目录必定要放到Cygwin目录前面
):
SET PATH=C:\BuildJDK\Make;%PATH%;C:\BuildJDK\MSVCR100;C:\BuildJDK\Ant\bin;C:\BuildJDK\Cygwin\cygwin\bin;C:\BuildJDK\JDK\Java\jdk1.7.0_51\bin
在上述
env.txt
文件末尾添加以下信息,将编译
OpenJDK7
所须要的头文件添加到INCLUDE变量中:
SET INCLUDE=%INCLUDE%C:\BuildJDK\MSDXSDK\June2010\Include;C:\BuildJDK\Cygwin\cygwin\usr\include;C:\BuildJDK\FreeType\include;C:\BuildJDK\FreeType\include\freetype;
在
上述env.txt文件中的末尾增长以下信息,将编译
OpenJDK7
所须要的lib文件添加到LIB、LIBPATH环境变量中:
SET LIB=%LIB%C:\BuildJDK\Ant\lib;C:\BuildJDK\FreeType\objs\win32\vc2010;C:\BuildJDK\JDK\Java\jdk1.7.0_51\lib;C:\BuildJDK\MSDXSDK\June2010\Lib\x86;
SET LIBPATH=%LIBPATH%C:\BuildJDK\Ant\lib;C:\BuildJDK\FreeType\objs\win32\vc2010;C:\BuildJDK\JDK\Java\jdk1.7.0_51\lib;C:\BuildJDK\MSDXSDK\June2010\Lib\x86;
<span style="font-family:Microsoft YaHei UI;"></span><img src="https://img-blog.csdn.net/20140526204357593?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvQkRYX0hhZG9vcF9PcHQ=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />
在
上述env.txt文件中的末尾增长以下信息,添加编译
OpenJDK7
所须要的其它环境变量:
SET ALT_DXSDK_PATH=C:\BuildJDK\MSDXSDK\June2010
SET ALT_COMPILER_PATH=C:\Program Files\Microsoft Visual Studio 10.0\VC\bin
SET ALT_BOOTDIR=C:\BuildJDK\JDK\Java\jdk1.7.0_51
SET ALT_JDK_IMPORT_PATH=C:\BuildJDK\JDK\Java\jdk1.7.0_51
SET ALT_CYGWIN_PATH=C:\BuildJDK\Cygwin\cygwin
SET ALT_FREETYPE_LIB_PATH=C:\BuildJDK\FreeType\objs\win32\vc2010
SET ALT_FREETYPE_HEADERS_PATH=C:\BuildJDK\FreeType\include
SET ALT_DROPS_DIR=C:\BuildJDK\OpenJDK\drops
SET ALT_MSVCRNN_DLL_PATH=C:\BuildJDK\MSVCR100
SET ZIP_DEBUGINFO_FILES=0
SET FULL_DEBUG_SYMBOLS=1
SET HOTSPOT_BUILD_JOBS=2
SET PARALLEL_COMPILE_JOBS=2
SET ALLOW_DOWNLOADS=true
SET DEBUG_NAME=debug
SET BUILD_CORBA=false
SET LANG=C
将
上述env.txt文件中的全部斜杠"\"所有替换为反斜杠"/":
替换完成后,
上述env.txt文件中全部内容以下:
SET INCLUDE=C:/Program Files/Microsoft Visual Studio 10.0/VC/INCLUDE;C:/Program Files/Microsoft Visual Studio 10.0/VC/ATLMFC/INCLUDE;C:/Program Files/Microsoft SDKs/Windows/v7.0A/include;
SET LIB=C:/Program Files/Microsoft Visual Studio 10.0/VC/LIB;C:/Program Files/Microsoft Visual Studio 10.0/VC/ATLMFC/LIB;C:/Program Files/Microsoft SDKs/Windows/v7.0A/lib;
SET LIBPATH=C:/Windows/Microsoft.NET/Framework/v4.0.30319;C:/Windows/Microsoft.NET/Framework/v3.5;C:/Program Files/Microsoft Visual Studio 10.0/VC/LIB;C:/Program Files/Microsoft Visual Studio 10.0/VC/ATLMFC/LIB;
SET Path=C:/Program Files/Microsoft F#/v4.0/;C:/Program Files/Microsoft Visual Studio 10.0/VSTSDB/Deploy;C:/Program Files/Microsoft Visual Studio 10.0/Common7/IDE/;C:/Program Files/Microsoft Visual Studio 10.0/VC/BIN;C:/Program Files/Microsoft Visual Studio 10.0/Common7/Tools;C:/Windows/Microsoft.NET/Framework/v4.0.30319;C:/Windows/Microsoft.NET/Framework/v3.5;C:/Program Files/Microsoft Visual Studio 10.0/VC/VCPackages;C:/Program Files/HTML Help Workshop;C:/Program Files/Microsoft Visual Studio 10.0/Team Tools/Performance Tools;C:/Program Files/Microsoft SDKs/Windows/v7.0A/bin/NETFX 4.0 Tools;C:/Program Files/Microsoft SDKs/Windows/v7.0A/bin;C:/Windows/system32;C:/Windows;C:/Windows/System32/Wbem;C:/Windows/System32/WindowsPowerShell/v1.0/;c:/Program Files/Microsoft SQL Server/100/Tools/Binn/;c:/Program Files/Microsoft SQL Server/100/DTS/Binn/
SET WindowsSdkDir=C:/Program Files/Microsoft SDKs/Windows/v7.0A/
SET PATH=C:/BuildJDK/Make;%PATH%;C:/BuildJDK/MSVCR100;C:/BuildJDK/Ant/bin;C:/BuildJDK/Cygwin/cygwin/bin;C:/BuildJDK/JDK/Java/jdk1.7.0_51/bin
SET INCLUDE=%INCLUDE%C:/BuildJDK/MSDXSDK/June2010/Include;C:/BuildJDK/Cygwin/cygwin/usr/include;C:/BuildJDK/FreeType/include;C:/BuildJDK/FreeType/include/freetype;
SET LIB=%LIB%C:/BuildJDK/Ant/lib;C:/BuildJDK/FreeType/objs/win32/vc2010;C:/BuildJDK/JDK/Java/jdk1.7.0_51/lib;C:/BuildJDK/MSDXSDK/June2010/Lib/x86;
SET LIBPATH=%LIBPATH%C:/BuildJDK/Ant/lib;C:/BuildJDK/FreeType/objs/win32/vc2010;C:/BuildJDK/JDK/Java/jdk1.7.0_51/lib;C:/BuildJDK/MSDXSDK/June2010/Lib/x86;
SET ALT_DXSDK_PATH=C:/BuildJDK/MSDXSDK/June2010
SET ALT_COMPILER_PATH=C:/Program Files/Microsoft Visual Studio 10.0/VC/bin
SET ALT_BOOTDIR=C:/BuildJDK/JDK/Java/jdk1.7.0_51
SET ALT_JDK_IMPORT_PATH=C:/BuildJDK/JDK/Java/jdk1.7.0_51
SET ALT_CYGWIN_PATH=C:/BuildJDK/Cygwin/cygwin
SET ALT_FREETYPE_LIB_PATH=C:/BuildJDK/FreeType/objs/win32/vc2010
SET ALT_FREETYPE_HEADERS_PATH=C:/BuildJDK/FreeType/include
SET ALT_DROPS_DIR=C:/BuildJDK/OpenJDK/drops
SET ALT_MSVCRNN_DLL_PATH=C:/BuildJDK/MSVCR100
SET ZIP_DEBUGINFO_FILES=0
SET FULL_DEBUG_SYMBOLS=1
SET HOTSPOT_BUILD_JOBS=2
SET PARALLEL_COMPILE_JOBS=2
SET ALLOW_DOWNLOADS=true
SET DEBUG_NAME=debug
SET BUILD_CORBA=false
SET LANG=C
上面全部操做都完成后,将
上述env.txt文件的文件名更改为env.bat,并在打开的CMD中执行之:
12.编译OpenJDK7
bash
export WINDOWSSDKDIR=$WindowsSDKDir
make sanity 2>&1 | tee c:/BuildJDK/make_sanity_x86.log
make 2>&1 | tee c:/BuildJDK/make_x86.log
html
打开bash,进入Cygwin:
设置bash中的环境变量:
export WINDOWSSDKDIR=$WindowsSDKDir
执行编译检测命令,查看配置是否成功:
make sanity 2>&1 | tee c:/BuildJDK/make_sanity_x86.log
开始检测:
检测完毕:
当出现Sanity check passed后,就能够执行下面的命令进行编译了:
make 2>&1 | tee c:/BuildJDK/make_x86.log
开始编译:
编译完成:
编译完成后,日志文件在
c:\BuildJDK\make_sanity_x86.log和
c:\BuildJDK\make_x86.log中。
编译后的JDK镜像位于C:\BuildJDK\OpenJDK\build\windows-i586目录中
1三、构建VS2010下的OpenJDK7调试环境
将C:\BuildJDK\OpenJDK\hotspot\make\windows\create.bat文件中的以下脚本注掉:
cl 2>NUL >NUL
if %errorlevel% == 0 goto nexttest
echo Make sure cl.exe is in your PATH before running this script.
goto end
:nexttest
grep -V 2>NUL >NUL
if %errorlevel% == 0 goto testit
echo Make sure grep.exe is in your PATH before running this script. Either cygwin or MKS should work.
goto end
注掉后:
打开一个CMD窗口,在C:\BuildJDK\OpenJDK\hotspot\make\windows文件夹下构建OpenJDK7工程文件:
cd /d C:\BuildJDK\OpenJDK\hotspot\make\windows
"C:\Program Files\Microsoft Visual Studio 10.0\Common7\Tools\vsvars32.bat"
SET JAVA_HOME=C:\BuildJDK\OpenJDK\build\windows-i586
SET PATH=C:\BuildJDK\OpenJDK\build\windows-i586\bin;%PATH%;C:\BuildJDK\Make;C:\BuildJDK\Cygwin\cygwin\bin;
SET HOTSPOTMKSHOME=C:\BuildJDK\Cygwin\cygwin\bin
create.bat ../../../build/windows-i586
开始构建:
构建完成: