`

openjdk windows 编译 - 转载+自己的实践

阅读更多


本文转载自 http://blog.csdn.net/instruder/article/details/8834117

 

 
 

前记

 

如果你不是闲着蛋疼最好不要在windows上面编译,linux上面一会就编译好了。。。。可是windows上面  只想说10个字“尼玛”

 

出现问题了  可以直接改他的makefile和gmk 爷爷的 例如那个verify.res 啥的 明明没有 他非要加入link 中,导致编译失败

 

感叹 人生太多的时间花费在这些虽然结果有用,但是过程无用的地方了   

 

参考文章

http://www.iteye.com/topic/1097344

openjdk自带的build html

 

BUILD JDK

 

1 hg http://mercurial.selenic.com/release/windows/mercurial-2.5.4-x86.msi

 

1 freetype freetype-2.3.5-1-bin

url  http://jaist.dl.sourceforge.net/project/gnuwin32/freetype/2.3.5-1/freetype-2.3.5-1-bin.zip

 

同时将bin目录下的文件全部拷贝到lib下 同时命名freetype6.dll 为freetype.dll

 

2 apache-ant-1.9.0

 

url http://mirrors.cnnic.cn/apache//ant/binaries/apache-ant-1.9.0-bin.zip

 

3 directx sdk DXSDK_Jun10.exe

 

url http://download.microsoft.com/download/A/E/7/AE743F1F-632B-4809-87A9-AA1BB3458E31/DXSDK_Jun10.exe

 

 

4 cygwin

 

url http://cygwin.com/setup.exe

 

假如没有这个dll 从网上下载一个

cygintl-3.dll  url http://www.opendll.com/dll/c/__32-cygintl-3.dll.zip

 

重命名 link.exe to link1.exe

 

替换the make.exe  url http://www.cmake.org/files/cygwin/make.exe

 

5 zlib1.dll

 

把这个zlib1.dll 放到要编译的jdk源码的根目录

 

6 修改语言设置

 

 

7 要编译x86版本一定要在x86 32位机器上编译,否则xxxxx

 

8 安装vs2010版

 

9 environment 变量设置

 

所有路径最好是/ 而不是\

 

ALT_BOOTDIR C:/javasec/src/compler/jdk

 

ALT_COMPILER_PATH   C:/ProgramFiles/Microsoft Visual Studio 10.0/VC/bin

 

ALT_DXSDK_PATH  c:/javasec/src/dxsdk

 

ALT_FREETYPE_HEADERS_PATH   C:/javasec/src/compler/freetype-2.3.5-1-bin/include

 

ALT_FREETYPE_LIB_PATH   C:/javasec/src/compler/freetype-2.3.5-1-bin/lib

 

ALT_JDK_IMPORT_PATHc:/javasec/src/compler/jdk

 

ANT_HOMEC:/javasec/src/compler/apache-ant-1.9.0

 

ALT_MSVCRNN_DLLc:/javasec/src/compler/msvcr

 

LIBPATH C:/Program Files/Microsoft VisualStudio 10.0/VC/lib;%LIB%

 

WINDOWSSDKDIR C:/Program Files/MicrosoftSDKs/Windows/v7.0A

 

VSINSTALLDIR C:/Program Files/MicrosoftVisual Studio 10.0

 

PATH

C:/Program Files/Microsoft Visual Studio10.0/VC/bin;c:/javasec/src/compler/jdk;c:/javasec/src/compler/jdk/bin;C:/ProgramFiles/Microsoft Visual Studio10.0;%VSINSTALLDIR%\Common7\Tools;%VSINSTALLDIR%\Common7\IDE;%VCINSTALLDIR%\VCPackages;c:/javasec/src/compler/freetype-2.3.5-1-bin/bin;%PATH%;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\ProgramFiles\Mercurial\;C:\Program Files\Microsoft SQLServer\100\Tools\Binn\;C:\Program Files\Microsoft SQLServer\100\DTS\Binn\;C:/Program Files/Microsoft SDKs/Windows/v7.0A/bin

 

INCLUDE

C:/Program Files/Microsoft Visual Studio10.0/VC/include;C:/Program Files/MicrosoftSDKs/Windows/v7.0A/Include;%ALT_FREETYPE_HEADERS_PATH%

 

LIB

C:/Program Files/Microsoft Visual Studio10.0/VC/lib;C:/Program Files/Microsoft SDKs/Windows/v7.0A/lib;%ALT_FREETYPE_LIB_PATH%

 

10 修改openjdk 的makefile文件和gmk文件

 (ps: forrest_lv:此处的修改没必要,可以参考http://wenku.baidu.com/link?url=mP1ctws5rFieudjyCeEChCa1rqGAA__oW3UjXnCBM0UYdL5CItcjtmc67DtHm8Nsl3MOHy55otJewAgQGC2jf-ncykMwxLELj4sL3VgnKNy  只是修改下makefile就行了

下面是修改的部分,主要是为了解决资源res 不存在的问题

Program.gmk

 

{

 

#$(OBJDIR)/$(PROGRAM).res:$(VERSIONINFO_RESOURCE)

#       @$(prep-target)

#ifndef LOCAL_RESOURCE_FILE

#       $(RC)$(RC_FLAGS) $(CC_OBJECT_OUTPUT_FLAG)$(@) $(VERSIONINFO_RESOURCE)

#endif

# $(OBJDIR)/$(PROGRAM).res add instruder

$(OBJDIR)/$(PROGRAM).lcf: $(FILES_o)

         @$(prep-target)

         @$(ECHO)$(FILES_o) > $@

#  ifndefLOCAL_RESOURCE_FILE

#       @$(ECHO)$(OBJDIR)/$(PROGRAM).res >> $@

#  endif

         @$(ECHO)setargv.obj >> $@

         @$(ECHO)Created $@

 

}

 

 

Library.gmk

{

#$(OBJDIR)/$(LIBRARY).res

$(OBJDIR)/$(LIBRARY).lcf: $(COMPILE_FILES_o)$(FILES_m)

         @$(prep-target)

         @$(MKDIR)-p $(TEMPDIR)

         @$(ECHO)$(FILES_o) > $@

#ifndef LOCAL_RESOURCE_FILE

#       @$(ECHO)$(OBJDIR)/$(LIBRARY).res >> $@

#       #@$(ECHO)Created $@

#endif

#       @$(ECHO)Created $@

 

# JDK name required here

RC_FLAGS += /D"JDK_FNAME=$(LIBRARY).dll" \

           /D "JDK_INTERNAL_NAME=$(LIBRARY)" \

           /D "JDK_FTYPE=0x2L"

 

#$(OBJDIR)/$(LIBRARY).res:$(VERSIONINFO_RESOURCE)

#ifndef LOCAL_RESOURCE_FILE

#       @$(prep-target)

#       $(RC)$(RC_FLAGS) $(CC_OBJECT_OUTPUT_FLAG)$(@) $(VERSIONINFO_RESOURCE)

#endi

}

 

Compiler-msvc.gmk

 

  ifeq($(CC_MAJORVER), 16)

   COMPILER_NAME=Microsoft Visual Studio 10 (16.00.30319.01)

   COMPILER_VERSION=VS201         #add

 

 

jdk\make\com\sun\java\pack\makefile

 

{

$(UNPACK_EXE): $(UNPACK_EXE_FILES_o)updatefiles winres

         $(prep-target)

         $(RM)$(TEMPDIR)/mapfile-vers

         $(CP)mapfile-vers-unpack200 $(TEMPDIR)/mapfile-vers

         $(LINKER)  $(LDDFLAGS) $(UNPACK_EXE_FILES_o) $(LIBCXX)$(LDOUTPUT)$(TEMPDIR)/unpack200$(EXE_SUFFIX)

# $(RES) fix by instruder

ifdef MT

         $(MT)/manifest $(OBJDIR)/unpack200$(EXE_SUFFIX).manifest/outputresource:$(TEMPDIR)/unpack200$(EXE_SUFFIX);#1

endif

         $(CP)$(TEMPDIR)/unpack200$(EXE_SUFFIX) $(UNPACK_EXE)

         @$(callbinary_file_verification,$@)

#fix by instruder

#ifeq ($(PLATFORM), windows)

#$(RES):: $(VERSIONINFO_RESOURCE)

#       $(prep-target)

#       $(RC)$(RC_FLAGS) $(CC_OBJECT_OUTPUT_FLAG)$(@) $(VERSIONINFO_RESOURCE)

#endi

}

 

 

Demo.gmk

 

{

#fix by instruder +

DEMO_RESOURCES        = $(filter-out %.java,$(DEMO_ALL_FILES)

}

 

11 上面操作完成之后,执行opjdk目录下面jdk/make 里面的jdk_generic_profile.sh 命令脚本

 

 

12 执行make sanity ,成功后开始make。。。。

 

 

13 看到这个界面就编译通过啦

二、 另请参考Windows下构建JDK

http://wenku.baidu.com/link?url=mP1ctws5rFieudjyCeEChCa1rqGAA__oW3UjXnCBM0UYdL5CItcjtmc67DtHm8Nsl3MOHy55otJewAgQGC2jf-ncykMwxLELj4sL3VgnKNy

 

forrest修正:

参考文件提到的

 library:: $(FREETYPE_LIB)

$(FREETYPE_LIB): $(ZLIB1_LIB)

$(CP) $(FREETYPE_LIB_PATH)/$(LIB_PREFIX)freetype6.$(LIBRARY_SUFFIX) $@

$(install-module-file) 

$(ZLIB1_LIB):  

$(CP) $(FREETYPE_LIB_PATH)/$(LIB_PREFIX)zlib1.$(LIBRARY_SUFFIX) $@ 

改为

  library:: $(FREETYPE_LIB)

$(FREETYPE_LIB): $(ZLIB1_LIB)

$(CP) $(FREETYPE_LIB_PATH)/$(LIB_PREFIX)freetype6.$(LIBRARY_SUFFIX) $@

$(CP) $(FREETYPE_LIB_PATH)/$(LIB_PREFIX)zlib1.$(LIBRARY_SUFFIX) $@ 

 

否则报

make[4]: *** No rule to make target `D:/java/openjdk/build/windows-i586/bin/zlib

1.dll', needed by `D:/java/openjdk/build/windows-i586/bin/freetype6.dll'.  Stop.

 

我们已经有zlib1.dll了,没必要再编译生产,拷贝一下到目的地就ok了。

 

 

三、 我的补充

一些环境变量设置一定要左斜杠/ ,右斜杠\会在cygwin中出错

 

修改D:\java\openjdk\jdk\make/jdk_generic_profile.sh

#repo=`hg root`

export repo=D:/java/openjdk

 

我使用的版本openjdk-7u40-fcs-src-b43-26_aug_2013

使用的vs2010 X16-42552VS2010UltimTrial1.iso

使用的dx: DXSDK_Jun10.exe

使用的安装版freetype-2.3.5-1 freetype-2.3.5-1-setup.exe

 

最后在cmd执行如下命令:

vcvars32.bat

set JAVA_HOME=

set CLASSPATH=

SET BUILD_CORBA=false bash

我的环境变量,最后如下:

C:\Users\rd_zhongqian_lv>set

ALLUSERSPROFILE=C:\ProgramData

ALT_BOOTDIR=D:/java/jdk1.7.0_01

ALT_COMPILER_PATH=D:/vs2010/VC/bin

ALT_DXSDK_PATH=D:/dxsdk

ALT_FREETYPE_HEADERS_PATH=D:/GnuWin32/include

ALT_FREETYPE_LIB_PATH=D:/GnuWin32/lib

ALT_JDK_IMPORT_PATH=D:/java/jdk1.7.0_01

ALT_MSVCRNN_DLL_PATH=D:/java/jdk1.7.0_01/bin

ANT_HOME=D:/java/apache-ant-1.9.4

APPDATA=C:\Users\rd_zhongqian_lv\AppData\Roaming

BUILD_CORBA=false

CommonProgramFiles=C:\Program Files\Common Files

COMPUTERNAME=HSZC1103-0267

ComSpec=C:\Windows\system32\cmd.exe

DevEnvDir=D:\vs2010\Common7\IDE\

DXSDK_DIR=D:/dxsdk

FP_NO_HOST_CHECK=NO

Framework35Version=v3.5

FrameworkDir=C:\Windows\Microsoft.NET\Framework\

FrameworkDIR32=C:\Windows\Microsoft.NET\Framework\

FrameworkVersion=v4.0.30319

FrameworkVersion32=v4.0.30319

HOMEDRIVE=C:

HOMEPATH=\Users\rd_zhongqian_lv

INCLUDE=D:\vs2010\VC\INCLUDE;D:\vs2010\VC\ATLMFC\INCLUDE;C:\Program Files\Micros

oft SDKs\Windows\v7.0A\include;D:/vs2010/VC/include;C:/Program Files/Microsoft S

DKs/Windows/v7.0A/Include;D:/GnuWin32/include

LIB=D:\vs2010\VC\LIB;D:\vs2010\VC\ATLMFC\LIB;C:\Program Files\Microsoft SDKs\Win

dows\v7.0A\lib;D:/vs2010/VC/lib;C:/Program Files/Microsoft SDKs/Windows/v7.0A/li

b;D:/GnuWin32/lib

LIBPATH=C:\Windows\Microsoft.NET\Framework\v4.0.30319;C:\Windows\Microsoft.NET\F

ramework\v3.5;D:\vs2010\VC\LIB;D:\vs2010\VC\ATLMFC\LIB;D:/vs2010/VC/lib;D:/vs201

0/VC/lib;C:/Program Files/Microsoft SDKs/Windows/v7.0A/lib;D:/GnuWin32/lib

LOCALAPPDATA=C:\Users\rd_zhongqian_lv\AppData\Local

LOGONSERVER=\\VKDADDS04

MAVEN=E:\apache-maven-3.2.2\bin

MAVEN_HOME=E:\apache-maven-3.2.2

MAVEN_OPTS=-Xms256m -Xmx512m

NUMBER_OF_PROCESSORS=2

OS=Windows_NT

Path=D:\vs2010\VSTSDB\Deploy;D:\vs2010\Common7\IDE\;D:\vs2010\VC\BIN;D:\vs2010\C

ommon7\Tools;C:\Windows\Microsoft.NET\Framework\v4.0.30319;C:\Windows\Microsoft.

NET\Framework\v3.5;D:\vs2010\VC\VCPackages;C:\Program Files\HTML Help Workshop;D

:\vs2010\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;.;D:/v

s2010/VC/bin;D:/vs2010;D:/vs2010/Common7/Tools;D:/vs2010/Common7/IDE;%VCINSTALLD

IR%/VCPackages;C:/Program Files/Microsoft SDKs/Windows/v7.0A/bin;D:/GnuWin32/bin

;D:/java/apache-ant-1.9.4/bin;D:/java/cygwin32/bin;D:/java/jdk1.7.0_01;D:/java/j

dk1.7.0_01/bin;E:\apache-maven-3.2.2\bin;D:/oracle/product/10.2.0/db_1/bin;C:/Wi

ndows/system32;C:/Windows;C:/Windows/System32/Wbem;C:/Windows/System32/WindowsPo

werShell/v1.0/;C:/Program Files/Windows7Master;D:/Program Files/TortoiseSVN/bin;

C:/Program Files/Microsoft SQL Server/100/Tools/Binn/;C:/Program Files/Microsoft

 SQL Server/100/DTS/Binn/

PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC

PERL5LIB=D:\oracle\product\10.2.0\db_1\perl\5.8.3\lib\MSWin32-x86;D:\oracle\prod

uct\10.2.0\db_1\perl\5.8.3\lib;D:\oracle\product\10.2.0\db_1\perl\5.8.3\lib\MSWi

n32-x86;D:\oracle\product\10.2.0\db_1\perl\site\5.8.3;D:\oracle\product\10.2.0\d

b_1\perl\site\5.8.3\lib;D:\oracle\product\10.2.0\db_1\sysman\admin\scripts;

PROCESSOR_ARCHITECTURE=x86

PROCESSOR_IDENTIFIER=x86 Family 6 Model 23 Stepping 10, GenuineIntel

PROCESSOR_LEVEL=6

PROCESSOR_REVISION=170a

ProgramData=C:\ProgramData

ProgramFiles=C:\Program Files

PROMPT=$P$G

PSModulePath=C:\Windows\system32\WindowsPowerShell\v1.0\Modules\

PUBLIC=C:\Users\Public

SESSIONNAME=Console

SystemDrive=C:

SystemRoot=C:\Windows

TEMP=C:\Users\RD_ZHO~1\AppData\Local\Temp

TMP=C:\Users\RD_ZHO~1\AppData\Local\Temp

USERDNSDOMAIN=KINGDEE.GBL

USERDOMAIN=KINGDEE

USERNAME=RD_zhongqian_lv

USERPROFILE=C:\Users\rd_zhongqian_lv

VCINSTALLDIR=D:\vs2010\VC\

VS100COMNTOOLS=D:\vs2010\Common7\Tools\

VSINSTALLDIR=D:\vs2010\

windir=C:\Windows

WindowsSdkDir=C:\Program Files\Microsoft SDKs\Windows\v7.0A\

windows_tracing_flags=3

windows_tracing_logfile=C:\BVTBin\Tests\installpackage\csilogfile.log

 


 
 

  • 大小: 5.3 KB
  • 大小: 17.7 KB
分享到:
评论

相关推荐

    openjdk-18-ea+25_linux-x64_bin.tar.gz

    标题中的"openjdk-18-ea+25_linux-x64_bin.tar.gz"是一个OpenJDK的早期访问(EA,Early Access)版本的压缩文件,适用于Linux x64架构。OpenJDK是Java开发的一个开源实现,由Oracle公司和其他贡献者共同维护。"ea+25...

    openjdk-11+28_windows-x64_bin.zip

    这个压缩包"openjdk-11+28_windows-x64_bin.zip"是专为Windows 64位操作系统设计的OpenJDK 11版本。该版本的构建号为28,这通常表示它是该版本的一个特定构建,可能包含了自初始发布以来的一些更新和修复。 OpenJDK...

    openjdk-19(openjdk-19-ea+5_linux-x64-musl_bin.tar.gz)

    OpenJDK 19是Java开发的一个开源实现,它提供了Java Development Kit (JDK) 的功能,用于构建和运行Java应用程序。"EA+5" 表示这是一个早期访问(Early Access)版本,加号后的数字5代表这个版本是该早期访问阶段的...

    openjdk-7-jdk+jdk7.zip

    包含jdk-7u6-linux-x64.tar.gz 和 java-7-openjdk-amd64.tar.gz

    openjdk-18(openjdk-18+36_windows-x64_bin.zip)

    这个版本的OpenJDK是针对Windows x64平台的,其安装包为“openjdk-18+36_windows-x64_bin.zip”。此压缩文件包含了运行和开发Java应用程序所需的一系列组件,包括Java Development Kit (JDK)的核心库、编译器、调试...

    openjdk-11+28_linux-x64_bin.tar.gz

    《OpenJDK 11+28 Linux-x64 Binaries 深度解析》 在信息技术领域,Java开发工具包(Java Development Kit,简称JDK)是进行Java编程的基础,而OpenJDK作为开源的JDK实现,是Java开发者的重要资源。本文将深入探讨...

    openjdk-17+35_windows-x64_bin.zip

    《OpenJDK 17+35 for Windows-x64: 深入解析与应用指南》 OpenJDK,全称Open Source Java Development Kit,是Java开发工具集的开源实现,由甲骨文公司(Oracle)主导并维护。本文将深入探讨OpenJDK 17+35在Windows...

    openjdk-19(openjdk-19-ea+24_windows-x64_bin.zip)

    OpenJDK 19是Java开发的一个开源实现,由OpenJDK社区维护并提供,它遵循Java SE(标准版)规范。"EA+24"指的是"Early Access build 24",这意味着这是一个早期访问版本,供开发者测试和评估新功能。这个版本面向的是...

    最新版windows openjdk-11+28_windows-x64_bin.zip

    《Windows环境下OpenJDK 11 64位安装与使用详解》 OpenJDK是Java Development Kit(Java开发工具包)的一个开源实现,由Oracle公司支持并维护。本篇将详细阐述如何在Windows操作系统上安装及使用OpenJDK 11的最新...

    openlogic-openjdk-11.0.8+10-windows-x64.zip

    这个版本的OpenJDK包含了Java运行时环境(JRE)和Java开发工具(JDK),使得开发者能够在Windows操作系统上进行Java程序的开发、编译、调试和运行。 首先,OpenJDK的核心在于其JVM(Java Virtual Machine),这是一...

    openjdk-17+35-windows-x64-bin.7z

    OpenJDK 是 Java Platform、Java SE 和相关项目的开源实现

    openjdk-19-ea+4_windows-x64_bin.zip

    这里我们关注的是`openjdk-19-ea+4_windows-x64_bin.zip`,这是一个早期访问(Early Access,EA)版本的OpenJDK 19,特别针对Windows x64平台的二进制发行版。OpenJDK是Java SE(Standard Edition)的开源实现,由...

    openjdk-18-ea+25_macos-x64_bin.tar.gz

    标题中的"openjdk-18-ea+25_macos-x64_bin.tar.gz"是一个OpenJDK(开放源代码的Java开发工具包)的压缩文件,特别的是,它是针对Mac OS X 64位系统的版本。"ea"代表"Early Access",这意味着这是一个预发布版本,...

    openjdk-15-ea+23_windows-x64_bin.zip

    “windows64位的openjdk源码”可能稍有误解,实际上OpenJDK的"bin"目录通常包含编译后的二进制文件,而不是源代码。源代码通常在"src"目录下,但这个压缩包并不包含源码,而是包含可执行文件,适合直接安装和使用。 ...

    openjdk-18-ea+25_linux-aarch64_bin.tar.gz

    标题中的"openjdk-18-ea+25_linux-aarch64_bin.tar.gz"是一个OpenJDK的早期访问(EA)版本,编号为18,构建号为25,适用于Linux操作系统,且是针对aarch64架构(也称为AArch64或ARM64)的二进制发行版。这个压缩文件...

    openlogic-openjdk-11.0.21+9-windows-x64

    【标题】"openlogic-openjdk-11.0.21+9-windows-x64" 指的是 OpenLogic 公司提供的一个特定版本的 OpenJDK,即开放源代码的 Java Development Kit,在Windows 64位操作系统上的实现。OpenJDK 是 Java 平台标准版...

    openjdk-19(openjdk-19-ea+24_macos-aarch64_bin.tar.gz)

    OpenJDK 19是Java开发的一个开源实现,它提供了Java Development Kit (JDK) 的功能,用于构建和运行Java应用程序。"ea+24" 表示这是早期访问(Early Access)版本的第24个构建,意味着它是OpenJDK 19在正式发布前的...

    openjdk-17源码(openjdk-17+35_src.zip)

    openjdk-17源码(openjdk-17+35_src.zip)

    openjdk-19(openjdk-19-ea+24_linux-x64_bin.tar.gz)

    OpenJDK 19是Java开发的一个开源实现,它提供了Java Development Kit (JDK) 的功能,用于构建和运行Java应用程序。"EA+24" 表示这是早期访问(Early Access)版本的第24个构建,意味着它是开发者测试新特性和改进的...

Global site tag (gtag.js) - Google Analytics