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

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
    #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/[email protected]/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


你可能感兴趣的:(Java,&&,JVM)