您的位置:首页 > 编程语言 > Java开发

Win7 X86_64 下构建OpenJDK7u40 64bit调试环境

2014-05-27 16:58 369 查看
0.说明

本文为在Windows 7 64bit下,编译并构建OpenJDK7u40 64bit调试环境,阅读本文之前,建议先阅读图解Win7下构建OpenJDK7u40 32bit调试环境

1.安装DXSDK
本文DXSDK_Jun10.exe的安装路径为:D:\Program Files (x86)\MSDXSDK\Microsoft DirectX SDK (June 2010)

2.安装Visual Studio 2010 && WindowsSDK 7.1 X64
本文VS2010的安装路径为:D:\Program Files (x86)\MSVisualStudio\Microsoft Visual Studio 10.0
本文WindowsSDK 7.1 X64的安装路径为:C:\Program Files\Microsoft SDKs\Windows\v7.1

3.安装JDK
本文jdk-7u51-windows-x64.exe的安装路径为:D:\OthrPromFiles\Oracle\OracleJava\Java

4.安装Ant
将apache-ant-1.9.4-bin.zip解压到D:\OthrPromFiles\Apache目录,并重命名为Ant

5.安装Cygwin
Cygwin需要安装的包如下:
Bynary Category Package
ar.exe Devel binutils
make.exe Devel make
m4.exe Interpreters m4
cpio.exe Utils cpio
gawk.exe Utils awk
file.exe Utils file
zip.exe Archive zip
unzip.exe Archive unzip
free.exe System procps
cygintl-3.dll libintl3
gcc\gdb\grep\sed\find
gcc-c++
libXp
libXp-devel
libXtst
libXtst-devel
libXt
libXt-devel
cups
cups-devel
libXrender
libXrender-devel
libXpm
libXpm-devel
libXi
libXi-devel
alsa-lib
alsa-lib-devel
freetype
freetype-devel

本文Cygwin下载文件存放路径为:D:\OthrPromFiles\Cygwin\install
本文Cygwin安装路径为:D:\OthrPromFiles\Cygwin\cygwin64

6.编译Make
本文make-3.82.tar.gz的编译路径为:D:\MyDocuments\VisualStudio\OpenJDK\make-3.82

cd /d D:\MyDocuments\VisualStudio\OpenJDK\make-3.82
set PATH=%PATH%;D:\OthrPromFiles\Cygwin\cygwin64\bin
bash
./configure
make

7.编译FreeType
用VS2010编译64bit版本的Freetype。

本文freetype-2.5.0.1.tar.bz2的编译路径为:D:\MyDocuments\VisualStudio\OpenJDK\freetype-2.5.0.1
本文freetype-2.5.0.1.tar.bz2的VS2010工程文件位于:D:\MyDocuments\VisualStudio\OpenJDK\freetype-2.5.0.1\builds\win32\vc2010目录中
VS2010编译配置选项如下所示:

•Configuration Manager -> Active Solution Manager -> Type or select the new Platform -> x64
•Configuration -> Release Multithreaded
•Platform -> x64
•Output Directory -> rename ".\..\..\..\objs\win32\vc2010\" to ".\..\..\..\objs\win64\vc2010\"
•Intermediate Directory -> rename ".\..\..\..\objs\release_mt\" to ".\..\..\..\objs\release_mt_64\"
•Target Name -> rename to "freetype"
•Platform Toolset -> Windows7.1SDK

8.解压OpenJDK
将openjdk-7u40-fcs-src-b43-26_aug_2013.zip解压到:D:\MyDocuments\VisualStudio\OpenJDK,并重命名为openjdk7u40

9.配置Drops文件:JAXP和JAX_WS

•jaxp-1_4_5-unittests.zip
•jaxp145_01.zip
•jdk7-jaxws2_2_4-b03-2011_05_27.zip
•jdk7-jaf-2010_08_19.zip
本文将上述四个文件存放到D:\MyDocuments\VisualStudio\OpenJDK\openjdk7u40\java\devtools\share\jdk7-drops目录中,构建jaxp和jaxws的ANT脚本会尝试从该目录查找这些zip文件。

10.配置msvcr100.dll文件
将D:\Program Files (x86)\MSVisualStudio\Microsoft Visual Studio 10.0\Common7\IDE\Remote Debugger\x64目录复制一份到D:\MyDocuments\VisualStudio\OpenJDK目录中,名重命名为MSVCR100。

11.配置环境变量

cd /d D:/MyDocuments/VisualStudio/OpenJDK/openjdk7u40
"C:/Program Files/Microsoft SDKs/Windows/v7.1/Bin/SetEnv.Cmd"

导出PATH、INCLUDE、LIB、LIBPATH、ORIGINALPATH变量,并修改如下:

SET INCLUDE=D:/Program Files (x86)/MSVisualStudio/Microsoft Visual Studio 10.0/VC/INCLUDE;C:/Program Files/Microsoft SDKs/Windows/v7.1/INCLUDE;C:/Program Files/Microsoft SDKs/Windows/v7.1/INCLUDE/gl;
SET LIB=D:/Program Files (x86)/MSVisualStudio/Microsoft Visual Studio 10.0/VC/Lib/amd64;C:/Program Files/Microsoft SDKs/Windows/v7.1/Lib/X64;
SET LIBPATH=C:/Windows/Microsoft.NET/Framework64/v4.0.30319;C:/Windows/Microsoft.NET/Framework/v4.0.30319;C:/Windows/Microsoft.NET/Framework64/v3.5;C:/Windows/Microsoft.NET/Framework/v3.5;;D:/Program Files (x86)/MSVisualStudio/Microsoft Visual
Studio 10.0/VC/Lib/amd64;
SET ORIGINALPATH=C:/Windows/system32;C:/Windows;C:/Windows/System32/Wbem;C:/Windows/System32/WindowsPowerShell/v1.0/;C:/Program Files (x86)/Microsoft SQL Server/100/Tools/Binn/;C:/Program Files/Microsoft SQL Server/100/Tools/Binn/;C:/Program
Files/Microsoft SQL Server/100/DTS/Binn/;C:/Program Files/Microsoft Windows Performance Toolkit/
SET Path=C:/Windows/Microsoft.NET/Framework64/v4.0.30319;C:/Windows/Microsoft.NET/Framework/v4.0.30319;C:/Windows/Microsoft.NET/Framework64/v3.5;C:/Windows/Microsoft.NET/Framework/v3.5;;D:/Program Files (x86)/MSVisualStudio/Microsoft Visual
Studio 10.0/Common7/IDE;D:/Program Files (x86)/MSVisualStudio/Microsoft Visual Studio 10.0/Common7/Tools;D:/Program Files (x86)/MSVisualStudio/Microsoft Visual Studio 10.0/VC/Bin/amd64;D:/Program Files (x86)/MSVisualStudio/Microsoft Visual Studio 10.0/VC/Bin/VCPackages;;C:/Program
Files/Microsoft SDKs/Windows/v7.1/Bin/NETFX 4.0 Tools/x64;C:/Program Files/Microsoft SDKs/Windows/v7.1/Bin/x64;C:/Program Files/Microsoft SDKs/Windows/v7.1/Bin;;C:/Windows/system32;C:/Windows;C:/Windows/System32/Wbem;C:/Windows/System32/WindowsPowerShell/v1.0/;C:/Program
Files (x86)/Microsoft SQL Server/100/Tools/Binn/;C:/Program Files/Microsoft SQL Server/100/Tools/Binn/;C:/Program Files/Microsoft SQL Server/100/DTS/Binn/;C:/Program Files/Microsoft Windows Performance Toolkit/
SET WindowsSDKDir=C:/Program Files/Microsoft SDKs/Windows/v7.1/

SET INCLUDE=%INCLUDE%D:/Program Files (x86)/MSDXSDK/Microsoft DirectX SDK (June 2010)/Include;D:/OthrPromFiles/Cygwin/cygwin64/usr/include;D:/MyDocuments/VisualStudio/OpenJDK/freetype-2.5.0.1/include;D:/MyDocuments/VisualStudio/OpenJDK/freetype-2.5.0.1/include/freetype;
SET LIB=%LIB%D:/OthrPromFiles/Apache/Ant/lib;D:/MyDocuments/VisualStudio/OpenJDK/freetype-2.5.0.1/objs/win64/vc2010;D:/OthrPromFiles/Oracle/OracleJava/Java/jdk1.7.0_51/lib;D:/Program Files (x86)/MSDXSDK/Microsoft DirectX SDK (June 2010)/Lib/x64;
SET LIBPATH=%LIBPATH%D:/OthrPromFiles/Apache/Ant/lib;D:/MyDocuments/VisualStudio/OpenJDK/freetype-2.5.0.1/objs/win64/vc2010;D:/OthrPromFiles/Oracle/OracleJava/Java/jdk1.7.0_51/lib;D:/Program Files (x86)/MSDXSDK/Microsoft DirectX SDK (June
2010)/Lib/x64;
SET ORIGINALPATH=D:/MyDocuments/VisualStudio/OpenJDK/make-3.82;%ORIGINALPATH%;D:/MyDocuments/VisualStudio/OpenJDK/MSVCR100;D:/OthrPromFiles/Apache/Ant/bin;D:/OthrPromFiles/Cygwin/cygwin64/bin;D:/OthrPromFiles/Oracle/OracleJava/Java/jdk1.7.0_51/bin
SET PATH=D:/MyDocuments/VisualStudio/OpenJDK/make-3.82;%PATH%;D:/MyDocuments/VisualStudio/OpenJDK/MSVCR100;D:/OthrPromFiles/Apache/Ant/bin;D:/OthrPromFiles/Cygwin/cygwin64/bin;D:/OthrPromFiles/Oracle/OracleJava/Java/jdk1.7.0_51/bin

SET ANT_HOME=D:/OthrPromFiles/Apache/Ant

SET ALT_DXSDK_PATH=D:/Program Files (x86)/MSDXSDK/Microsoft DirectX SDK (June 2010)
SET ALT_COMPILER_PATH=D:/Program Files (x86)/MSVisualStudio/Microsoft Visual Studio 10.0/VC/bin/amd64
SET ALT_BOOTDIR=D:/OthrPromFiles/Oracle/OracleJava/Java/jdk1.7.0_51
SET ALT_JDK_IMPORT_PATH=D:/OthrPromFiles/Oracle/OracleJava/Java/jdk1.7.0_51
SET ALT_CYGWIN_PATH=D:/OthrPromFiles/Cygwin/cygwin64
SET ALT_FREETYPE_LIB_PATH=D:/MyDocuments/VisualStudio/OpenJDK/freetype-2.5.0.1/objs/win64/vc2010
SET ALT_FREETYPE_HEADERS_PATH=D:/MyDocuments/VisualStudio/OpenJDK/freetype-2.5.0.1/include
SET ALT_DROPS_DIR=D:/MyDocuments/VisualStudio/OpenJDK/openjdk7u40/java/devtools/share/jdk7-drops
SET ALT_MSVCRNN_DLL_PATH=D:/MyDocuments/VisualStudio/OpenJDK/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

12.编译OpenJDK7u40

bash
export WINDOWSSDKDIR=$WindowsSDKDir
make sanity 2>&1 | tee ../make_sanity_x86.log
make 2>&1 | tee ../make_x86.log

13.创建VS2010调试环境

注释掉D:\MyDocuments\VisualStudio\OpenJDK\openjdk7u40\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

构建VS2010工程文件

cd /d D:\MyDocuments\VisualStudio\OpenJDK\openjdk7u40\hotspot\make\windows
"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.Cmd"

SET JAVA_HOME=D:\MyDocuments\VisualStudio\OpenJDK\openjdk7u40\build\windows-amd64
SET PATH=D:\MyDocuments\VisualStudio\OpenJDK\openjdk7u40\build\windows-amd64\bin;%PATH%;D:\MyDocuments\VisualStudio\OpenJDK\make-3.82;D:\OthrPromFiles\Cygwin\cygwin64\bin
SET HOTSPOTMKSHOME=D:\OthrPromFiles\Cygwin\cygwin64\bin
create.bat ../../../build/windows-amd64

14.配置VS相对路径

配置相对路径,以实现在任意目录中均可以编译成功

配置环境变量,让HOTSPOT_PATH指向当前的hotspot目录:
HOTSPOT_PATH
D:\MyDocuments\VisualStudio\OpenJDK\openjdk7u40\hotspot

配置环境变量,让CYGWIN_PATH指向当前的cygwin目录:
CYGWIN_PATH
D:\OthrPromFiles\Cygwin\cygwin64

用文本编辑器,打开%HOTSPOT_PATH%\build\vs-i486目录下面的jvm.vcxproj文件,将其中的"D:\MyDocuments\VisualStudio\OpenJDK\openjdk7u40\hotspot"全部替换为"$(HOTSPOT_PATH)",将其中的"D:\OthrPromFiles\Cygwin\cygwin64"全部替换为"$(CYGWIN_PATH)"
用文本编辑器,打开%HOTSPOT_PATH%\make\windows\projectfiles\common\Makefile文件,在文件中首次出现HOTSPOTWORKSPACE变量的地方的上一行处设置HOTSPOTWORKSPACE变量,让其指向hotspot目录: HOTSPOTWORKSPACE=$(HOTSPOT_PATH)

15.导入静态库文件:

如果编译出现连接问题,可能需要导入静态库,打开%HOTSPOT_PATH%\src\os\windows\vm\os_windows.cpp文件,向该文件中添加如下内容:

#include <Psapi.h>
#pragma comment ( lib, "psapi.lib" )

16、打包
将openjdk7u40和Cygwin目录打包,将该包解压到任意Win64环境下,并配置相应的HOTSPOT_PATH和CYGWIN_PATH环境变量,即可在任意机器的任意目录中使用Visual Studio调试OpenJDK7u40的代码了。

17、下载链接
Windows 7 64bit:http://www.itellyou.cn/
DXSDK_Jun10.exe:http://www.microsoft.com/en-us/download/details.aspx?id=6812
en_visual_studio_2010_ultimate_x86_dvd_509116.iso:http://www.itellyou.cn/
WindowsSDK 7.1 X64(GRMSDKX_EN_DVD.iso):http://www.microsoft.com/en-us/download/details.aspx?id=8442
jdk-7u51-windows-x64.exe:http://www.oracle.com/technetwork/java/javase/downloads/index.html
apache-ant-1.9.4-bin.zip:http://ant.apache.org/
Cygwin-x64:http://www.cygwin.com/install.html
make-3.82.tar.gz:http://ftp.gnu.org/gnu/make/
freetype-2.5.0.1.tar.gz:http://sourceforge.net/projects/freetype/files/freetype2/2.5.0/
openjdk-7u40-fcs-src-b43-26_aug_2013.zip:http://download.java.net/openjdk/
jaxp-1_4_5-unittests.zip:http://download.java.net/jaxp/1.4.5
jaxp145_01.zip:http://download.java.net/jaxp/1.4.5
jdk7-jaxws2_2_4-b03-2011_05_27.zip:http://download.java.net/glassfish/components/jax-ws/openjdk/jdk7
jdk7-jaf-2010_08_19.zip:https://java.net/downloads/jax-ws/JDK7/

18、参考链接
http://hg.openjdk.java.net/jdk7/build/raw-file/tip/README-builds.html
https://weblogs.java.net/blog/simonis/archive/2011/10/28/yaojowbi-yet-another-openjdk-windows-build-instruction
http://betoweb.com.br/blog/2013/07/12/building-openjdk-on-ms-windows-8/
http://www.javacodegeeks.com/2012/09/stass-blog-building-openjdk-on-windows.html
https://www.mail-archive.com/build-dev@openjdk.java.net/msg05014.html
http://www.sunnychan.hk/roller/sunny/entry/how_to_compile_openjdk_on
http://markmail.org/message/5uycurv63qv5nf2s
http://www.tuicool.com/articles/A7jUfe
https://github.com/codefollower/OpenJDK-Research
http://blog.csdn.net/gnefniu/article/details/7515394
https://blogs.oracle.com/poonam/entry/how_to_create_vc_project

19.批处理脚本

cd /d D:/MyDocuments/VisualStudio/OpenJDK/openjdk7u40
"C:/Program Files/Microsoft SDKs/Windows/v7.1/Bin/SetEnv.Cmd"

SET INCLUDE=D:/Program Files (x86)/MSVisualStudio/Microsoft Visual Studio 10.0/VC/INCLUDE;C:/Program Files/Microsoft SDKs/Windows/v7.1/INCLUDE;C:/Program Files/Microsoft SDKs/Windows/v7.1/INCLUDE/gl;
SET LIB=D:/Program Files (x86)/MSVisualStudio/Microsoft Visual Studio 10.0/VC/Lib/amd64;C:/Program Files/Microsoft SDKs/Windows/v7.1/Lib/X64;
SET LIBPATH=C:/Windows/Microsoft.NET/Framework64/v4.0.30319;C:/Windows/Microsoft.NET/Framework/v4.0.30319;C:/Windows/Microsoft.NET/Framework64/v3.5;C:/Windows/Microsoft.NET/Framework/v3.5;;D:/Program Files (x86)/MSVisualStudio/Microsoft Visual
Studio 10.0/VC/Lib/amd64;
SET ORIGINALPATH=C:/Windows/system32;C:/Windows;C:/Windows/System32/Wbem;C:/Windows/System32/WindowsPowerShell/v1.0/;C:/Program Files (x86)/Microsoft SQL Server/100/Tools/Binn/;C:/Program Files/Microsoft SQL Server/100/Tools/Binn/;C:/Program
Files/Microsoft SQL Server/100/DTS/Binn/;C:/Program Files/Microsoft Windows Performance Toolkit/
SET Path=C:/Windows/Microsoft.NET/Framework64/v4.0.30319;C:/Windows/Microsoft.NET/Framework/v4.0.30319;C:/Windows/Microsoft.NET/Framework64/v3.5;C:/Windows/Microsoft.NET/Framework/v3.5;;D:/Program Files (x86)/MSVisualStudio/Microsoft Visual
Studio 10.0/Common7/IDE;D:/Program Files (x86)/MSVisualStudio/Microsoft Visual Studio 10.0/Common7/Tools;D:/Program Files (x86)/MSVisualStudio/Microsoft Visual Studio 10.0/VC/Bin/amd64;D:/Program Files (x86)/MSVisualStudio/Microsoft Visual Studio 10.0/VC/Bin/VCPackages;;C:/Program
Files/Microsoft SDKs/Windows/v7.1/Bin/NETFX 4.0 Tools/x64;C:/Program Files/Microsoft SDKs/Windows/v7.1/Bin/x64;C:/Program Files/Microsoft SDKs/Windows/v7.1/Bin;;C:/Windows/system32;C:/Windows;C:/Windows/System32/Wbem;C:/Windows/System32/WindowsPowerShell/v1.0/;C:/Program
Files (x86)/Microsoft SQL Server/100/Tools/Binn/;C:/Program Files/Microsoft SQL Server/100/Tools/Binn/;C:/Program Files/Microsoft SQL Server/100/DTS/Binn/;C:/Program Files/Microsoft Windows Performance Toolkit/
SET WindowsSDKDir=C:/Program Files/Microsoft SDKs/Windows/v7.1/

SET INCLUDE=%INCLUDE%D:/Program Files (x86)/MSDXSDK/Microsoft DirectX SDK (June 2010)/Include;D:/OthrPromFiles/Cygwin/cygwin64/usr/include;D:/MyDocuments/VisualStudio/OpenJDK/freetype-2.5.0.1/include;D:/MyDocuments/VisualStudio/OpenJDK/freetype-2.5.0.1/include/freetype;
SET LIB=%LIB%D:/OthrPromFiles/Apache/Ant/lib;D:/MyDocuments/VisualStudio/OpenJDK/freetype-2.5.0.1/objs/win64/vc2010;D:/OthrPromFiles/Oracle/OracleJava/Java/jdk1.7.0_51/lib;D:/Program Files (x86)/MSDXSDK/Microsoft DirectX SDK (June 2010)/Lib/x64;
SET LIBPATH=%LIBPATH%D:/OthrPromFiles/Apache/Ant/lib;D:/MyDocuments/VisualStudio/OpenJDK/freetype-2.5.0.1/objs/win64/vc2010;D:/OthrPromFiles/Oracle/OracleJava/Java/jdk1.7.0_51/lib;D:/Program Files (x86)/MSDXSDK/Microsoft DirectX SDK (June
2010)/Lib/x64;
SET ORIGINALPATH=D:/MyDocuments/VisualStudio/OpenJDK/make-3.82;%ORIGINALPATH%;D:/MyDocuments/VisualStudio/OpenJDK/MSVCR100;D:/OthrPromFiles/Apache/Ant/bin;D:/OthrPromFiles/Cygwin/cygwin64/bin;D:/OthrPromFiles/Oracle/OracleJava/Java/jdk1.7.0_51/bin
SET PATH=D:/MyDocuments/VisualStudio/OpenJDK/make-3.82;%PATH%;D:/MyDocuments/VisualStudio/OpenJDK/MSVCR100;D:/OthrPromFiles/Apache/Ant/bin;D:/OthrPromFiles/Cygwin/cygwin64/bin;D:/OthrPromFiles/Oracle/OracleJava/Java/jdk1.7.0_51/bin

SET ANT_HOME=D:/OthrPromFiles/Apache/Ant

SET ALT_DXSDK_PATH=D:/Program Files (x86)/MSDXSDK/Microsoft DirectX SDK (June 2010)
SET ALT_COMPILER_PATH=D:/Program Files (x86)/MSVisualStudio/Microsoft Visual Studio 10.0/VC/bin/amd64
SET ALT_BOOTDIR=D:/OthrPromFiles/Oracle/OracleJava/Java/jdk1.7.0_51
SET ALT_JDK_IMPORT_PATH=D:/OthrPromFiles/Oracle/OracleJava/Java/jdk1.7.0_51
SET ALT_CYGWIN_PATH=D:/OthrPromFiles/Cygwin/cygwin64
SET ALT_FREETYPE_LIB_PATH=D:/MyDocuments/VisualStudio/OpenJDK/freetype-2.5.0.1/objs/win64/vc2010
SET ALT_FREETYPE_HEADERS_PATH=D:/MyDocuments/VisualStudio/OpenJDK/freetype-2.5.0.1/include
SET ALT_DROPS_DIR=D:/MyDocuments/VisualStudio/OpenJDK/openjdk7u40/java/devtools/share/jdk7-drops
SET ALT_MSVCRNN_DLL_PATH=D:/MyDocuments/VisualStudio/OpenJDK/MSVCR100

SET ZIP_DEBUGINFO_FILES=0
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

bash
export WINDOWSSDKDIR=$WindowsSDKDir

make sanity 2>&1 | tee ../make_sanity_x86.log

make 2>&1 | tee ../make_x86.log
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: