系统: WindowsXP SP3
一、软件安装
我所安装的软件版本下载地址: http://pan.baidu.com/s/1gzeV0 密码: 2pb4
注意所有的软件安装路径不要有空格,如果已经安装的软件路径有空格的可以使用junction.exe 工具,在cmd下cd到junction目录执行:junction D:\BuildOpenJDK\MicrosoftSDKs “C:\Program Files\Microsoft SDKs”
1、OpenJDK7源码
openjdk-7-fcs-src-b147-27_jun_2011.zip 下载地址
http://download.java.net/openjdk/jdk7/ 密码: 2pb4
2、JAXP和JAX-WS
在http://download.java.net/jaxp/1.4.5
下载jaxp-1_4_5-unittests.zip和jaxp145_01.zip,
在http://download.java.net/glassfish/components/jax-ws/openjdk/jdk7
下载jdk7-jaxws2_2_4-b03-2011_05_27.zip
在https://java.net/downloads/jax-ws/JDK7/ 下载jdk7-jaf-2010_08_19.zip
将这4个压缩包放到D:/BuildOpenJDK/jdk7-drops目录下,设置set ALT_DROPS_DIR=该目录,构建jaxp和jaxws的ANT脚本会尝试从该目录查找这些zip。
3、cygwin-2.85,需手动安装一下包
文件名 |
分类 |
包 |
描述 |
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 |
Base |
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 |
另外还需搜索安装:libintl3,
下载cygintl-3.dll放到cygwin安装目录bin下。
注意:安装的make.exe为3.82版,导致编译不能成功,需要从cygwin网站上下载3.80版本的make.exe放到bin目录下,将原来的覆盖。
4、Sun JDK 1.6 u14以上
5、Microsoft DirecxX SDK(sum2004)
建立ALT_DXSDK_PATH环境变量,指向安装目录。
6、Microsoft Visual Studio C++ 2010 (正式版或者Express版均可)
junction D:\BuildOpenJDK\MicrosoftSDKs “C:\Program Files\Microsoft SDKs”
建立WINDOWSSDKDIR环境变量,指向D:\BuildOpenJDK\MicrosoftSDKs\Windows\v7.0A 路径
msvcr100.dll,并建立ALT_MSVCRNN_DLL_PATH 环境变量指向该文件所在的目录。
7、Apache Ant 1.7.1以上
8、Freetype-2.3.5-1
建立ALT_FREETYPE_LIB_PATH 和ALT_FREETYPE_HEADERS_PATH环境变量,分别指向freetype安装目录下的lib目录和include目录。
将bin目录下的freetype6.dll和zlib1.dll复制到lib目录下。
二、环境变量
用批处理来设置环境变量,将以下命令复制到cmd窗口下执行,该环境变量的设置只对当前窗口生效,然后运行bash命令,在bash中执行:echo $PATH,查看环境变量是否设置正确。
SET JAVA_HOME=
SET classpath=
set ALT_BOOTDIR=D:/BuildOpenJDK/ProgramFiles/Java/jdk1.6.0_20
set ALT_CC_VER=16.00.30319.01
set ALT_MSC_VER_RAW=16.00.30319.01
set ALT_COMPILER_PATH=D:/VS2010/VC/bin
set ALT_DROPS_DIR=D:/BuildOpenJDK/jdk7-drops
set ALT_DXSDK_PATH=D:/BuildOpenJDK/DirectX9SDKSum2004
set ALT_FREETYPE_HEADERS_PATH=D:/BuildOpenJDK/FreeType/GnuWin32/include
set ALT_FREETYPE_LIB_PATH=D:/BuildOpenJDK/FreeType/GnuWin32/bin
set ALT_JDK_IMPORT_PATH=%ALT_BOOTDIR%
set ALT_MSVCRNN_DLL_PATH=D:/BuildOpenJDK/msvcr100
set ALT_MSVCRT_DLL_PATH=D:/BuildOpenJDK/msvcr100
set ALT_WINDOWSSDKDIR=D:/BuildOpenJDK/MicrosoftSDKs/Windows/v7.0A
set ANT_HOME=D:/BuildOpenJDK/apache-ant-1.9.2
set BUILD_CORBA=false
set COMPILER_VERSION=VS2010
set DXSDK_DIR=D:/BuildOpenJDK/DirectX9SDKSum2004/
set INCLUDE=D:/VS2010/VC/include;D:/BuildOpenJDK/MicrosoftSDKs/Windows/v7.0A/Include
set LANG=C
set LC_ALL=C
set LIB=D:/VS2010/VC/lib;D:/BuildOpenJDK/MicrosoftSDKs/Windows/v7.0A/Lib
set PATH=D:/BuildOpenJDK/MicrosoftSDKs/NETFX4.0Tools;D:/BuildOpenJDK/MicrosoftSDKs/Windows/v7.0A/bin;D:/VS2010/VC/bin;D:/VS2010/Common7/IDE;D:/cygwin/bin;%SystemRoot%/system32;%SystemRoot%;%SystemRoot%/System32/Wbem;%ANT_HOME%/bin;%ALT_FREETYPE_LIB_PATH%
set RC=D:/BuildOpenJDK/MicrosoftSDKs/Windows/v7.0A
set REBASE=D:/BuildOpenJDK/MicrosoftSDKs/Windows/v7.0A
set WINDOWSSDKDIR=D:/BuildOpenJDK/MicrosoftSDKs/Windows/v7.0A
路径中的分割符采用斜线(/)而不是反斜线(\)。
cygwin的bin目录在PATH中的位置应该在系统的System32目录之前(脚本中会用到cygwin的find命令,否则会用windows的find命令导致出错)。而VC++的bin目录应该在cygwin之前(同样的原因,编译需要用到的是VC++中的link.exe)。
三、Openjdk中的文件修改
文件: /jdk/make/sun/font/Makefile: 第126行: FREETYPE_LIB =$(LIB_LOCATION)/$(LIB_PREFIX)freetype.$(LIBRARY_SUFFIX) 改为: FREETYPE_LIB =$(LIB_LOCATION)/$(LIB_PREFIX)freetype6.$(LIBRARY_SUFFIX) ZLIB1_LIB =$(LIB_LOCATION)/$(LIB_PREFIX)zlib1.$(LIBRARY_SUFFIX) 第137,138行: $(FREETYPE_LIB): $(CP)$(FREETYPE_LIB_PATH)/$(LIB_PREFIX)freetype.$(LIBRARY_SUFFIX) $@ 改为: $(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)$@ 文件:jdk/make/tools/freetypecheck/Makefile 第41行: FREETYPE_DLL =$(FREETYPE_LIB_PATH)/freetype.dll 改为: FREETYPE_DLL =$(FREETYPE_LIB_PATH)/freetype6.dll ZLIB1_DLL = $(FREETYPE_LIB_PATH)/zlib1.dll 第72行下加入: $(CP) $(ZLIB1_DLL) $(@D)/ 文件:jdk/src/share/classes/sun/font/FontManagerNativeLibrary.java 第59行: System.loadLibrary("freetype"); 改为: System.loadLibrary("freetype6"); 文件:/corba/make/common/shared/Defs-java.gmk 第133行: JAVACFLAGS += -encoding ascii 改为: # JAVACFLAGS += -encoding ascii 第194行: BOOT_JAVACFLAGS += -encoding ascii -source$(BOOT_SOURCE_LANGUAGE_VERSION) -target $(BOOT_TARGET_CLASS_VERSION) 改为: BOOT_JAVACFLAGS += -source $(BOOT_SOURCE_LANGUAGE_VERSION)-target $(BOOT_TARGET_CLASS_VERSION) 文件:/jdk/make/common/shared/Defs-java.gmk 第134行: JAVACFLAGS += -encoding ascii 改为: # JAVACFLAGS += -encoding ascii 第212行: BOOT_JAVACFLAGS += -encoding ascii -source$(BOOT_SOURCE_LANGUAGE_VERSION) -target $(BOOT_TARGET_CLASS_VERSION) 改为: BOOT_JAVACFLAGS += -source$(BOOT_SOURCE_LANGUAGE_VERSION) -target $(BOOT_TARGET_CLASS_VERSION) 文件:/hotspot/make/windows/makefiles/rules.make 第48行: JAVAC_FLAGS=-g -encoding ascii 改为: JAVAC_FLAGS=-g OpenJDK启用了VC的“将警告视为错误”(warnings as errors)选项。如果链接器生成警告,/WX 将不会生成任何输出文件。 文件:/hotspot/make/windows/makefiles/compile.make 第53行: CPP_FLAGS=/nologo /W3 /WX 改为: CPP_FLAGS=/nologo /W3 /WX- 文件:/hotspot/src/share/tools/hsdis/Makefile 第92行: CFLAGS += /nologo /MD /W3 /WX /O2 /Fo$(@:.dll=.obj) /Gi- 改为: CFLAGS += /nologo /MD /W3 /WX- /O2 /Fo$(@:.dll=.obj) /Gi- 文件:/hotspot/make/windows/get_msc_ver.sh 第61行 将MSC_VER_RAW=`cl 2>&1 | "$HEAD" -n 1 | "$SED" 's/.*Version[/ ]*/([0-9][0-9.]*/).*//1/'` 改为:if [ "${ALT_MSC_VER_RAW}" != "" ] ; then MSC_VER_RAW=${ALT_MSC_VER_RAW} else MSC_VER_RAW=`cl 2>&1 | "$HEAD" -n 1 | "$SED" 's/.*Version[/ ]*/([0-9][0-9.]*/).*//1/'` fi 文件:/jdk/make/common/shared/Compiler-msvc.gmk 第48行 CC_VER := $(shell $(CC) 2>&1 | $(HEAD) -n 1 | $(SED) 's/.*/(Version.*/)//1/' | $(NAWK) '{print $$2}') 改为:ifdef ALT_CC_VER CC_VER := $(ALT_CC_VER) else CC_VER := $(shell $(CC) 2>&1 | $(HEAD) -n 1 | $(SED) 's/.*/(Version.*/)//1/' | $(NAWK) '{print $$2}') endif
四、编译
进入openjdk目录进行编译了。首先在设置环境变量的cmd窗口输入bash进入cygwin环境,然后输入make sanity进行环境变量检查,如果回显输出make sanity pass就可以继续,如果出错那么需要回头检查一下之前的设置是否正确。最后输入make进行编译即可。当然还有可能出错,那就要仔细查看错误输出再尝试解决了。
五、问题
1、ERROR: Cannot find the RC utility from path:
This is normally obtained from the WINDOWSSDKDIR.
查看环境变量WINDOWSSDKDIR 对应的路径是否有空格。
2、NMAKE : fatal error U1077: 'if' : return code '0x1'
a、查看环境变量PATH中的环境变量是否都正确,且路径不能重复配置。
b、操作系统或者VS安装问题。可以自己写一个简单的makefile文件如:
all:
@echo test...
保存为t.mak,然后在doc下设置set PATH=D:/VS2010/VC/bin;
执行nmake t.mak查看是否异常。
相关推荐
openjdk7 在windows下编译过程及总结-附件资源
在介绍如何在Windows 7环境下编译OpenJDK 8源代码之前,有必要了解一些基础知识和前提条件。OpenJDK是Java平台的开源实现,其中包括JVM(Java虚拟机)和Java类库。OpenJDK的源代码使用C和C++编写,支持跨平台编译。...
本文将深入探讨OpenJDK 17+35在Windows-x64平台上的特性和使用方法,为开发者提供详尽的参考。 一、OpenJDK 17概述 OpenJDK 17是Java Development Kit的第17个主要版本,其版本号中的“+35”表示该版本是基于特定...
总结,OpenJDK为Windows 32位用户提供了一个免费且可靠的Java运行环境,尤其适合那些无法使用Oracle JDK的用户。通过下载、解压、配置环境变量以及验证安装,我们可以轻松地在32位系统上搭建起Java开发环境。同时,...
2. **强类型安全**:OpenJDK 17 提供了增强的类型检查,确保程序在编译期间就发现潜在的类型错误,减少运行时异常。 3. **文本块(Text Blocks)**:Java 13 引入的新语法特性,使得多行字符串的编写更加直观,减少...
在本文中,我们将深入探讨如何在银河麒麟V10操作...通过正确配置和安装所有必要的依赖,可以确保编译过程顺利进行。完成编译和安装后,用户将拥有一个针对特定平台定制的Qt环境,可用于开发和运行基于Qt的应用程序。
虽然OpenJDK 11.0.1针对的是Linux x64平台,但Java的跨平台特性意味着同一代码可以在其他支持Java的系统上运行,如Windows、macOS等,只需进行适当的调整。 9. **未来发展趋势** 自Java 11起,Oracle改变了Java的...
在Mac环境下,JNI的编译过程可能会与Windows或Linux有所不同,因为每个操作系统有自己的库管理和编译工具链。本篇文章将深入探讨如何在Mac上进行JNI编译。 首先,确保你已经安装了Java Development Kit (JDK)。Java...
1. **OpenJDK 17+35 for Windows x64** (openjdk-17+35-windows-x64-bin.zip): - **版本号**:OpenJDK 17+35 - **操作系统**:Windows x64 - **类型**:OpenJDK - **发布日期**:OpenJDK 17 发布于 2021 年 9 ...
### 使用JDK、Eclipse、MinGw在Windows环境下搭建Linux环境进行C/C++开发的知识点 #### 一、概述 在Windows环境下搭建一个能够支持C/C++开发的环境,通常需要安装一系列的软件和配置相应的环境变量。本文将详细介绍...
- 在 Hadoop 目录下执行编译命令: ```bash mvn clean package -DskipTests -Dmaven.javadoc.skip=true -Pdist,native -Dtar ``` - 这个过程可能需要较长时间,请耐心等待。 #### 四、总结 通过以上步骤,您...
- **源代码完整性**:由于反编译过程是基于字节码逆向生成源代码,因此生成的源代码可能与原始源代码在语法和结构上有所不同,特别是当原始源代码包含复杂优化或元数据时。 - **版权问题**:反编译他人的代码可能...
总结来说,本教程涵盖了在Windows虚拟机内安装和配置Linux,以及在Linux上编译和运行Hadoop的基本步骤。通过这个过程,你可以在本地环境中测试和开发大数据处理算法,为后续的大规模集群部署打下坚实基础。
在描述中提到,测试环境下使用的为openjdk-jre-11.0.20+8-windows-x64,这是Java运行环境,Kettle作为Java编写的应用,依赖JRE运行。因此,确保系统已安装兼容的Java版本是运行Kettle的前提。 在Windows 11系统上...
这在某些场景下可以减少对象创建的数量,从而降低垃圾回收的压力。 ##### 5. 常量动态类加载 JDK 10引入了`ClassDescriptor`和`ConstantDynamic`特性,允许在运行时动态生成类和方法。这对于框架和库的开发非常...
对于开发者来说,OpenJDK与Oracle JDK在功能上基本保持一致,但在某些情况下,OpenJDK可能会提供更快的更新周期和对最新技术的支持。 总结来说,"java-1.8.0 for windows.x86"是一个专为32位Windows系统设计的Java...
在进行Java虚拟机(JVM)的研究与开发过程中,尤其是对于HotSpot虚拟机而言,有时我们需要深入到汇编代码层面来进行调试。这是因为HotSpot在执行Java字节码时,会将热点代码编译成本地机器码以提高执行效率。因此,...
总结起来,"jdk-8u271-windows-x64"代表了Oracle官方提供的Java 8更新版,它引入了诸如Lambda表达式、默认方法和方法引用等革新,是Windows 64位系统上的开发者必备工具。这个版本的JDK包含了一系列用于开发、编译和...