win10编译openjdk源码

上篇文章作者在ubuntu系统上实践完成openjdk源码的编译,但是平常使用更多的是window系统,ubuntu上编译出来JDK无法再windows上使用。所以作者又花费了很长时间在windows系统上完成openjdk源码的编译,陆续花费一个月的时间终于完成了编译。

本文挑拣关键点记录,就不详细记录踩坑的细节。如果您希望快速成功编译,欢迎咨询。

1、安装vs2010,仅需安装C++模块。

重要的事情说三遍:
一定要安装英文专业版!!!
一定要安装英文专业版!!!
一定要安装英文专业版!!!

2、编译freetype。这项参照网上帖子,一般问题不大。

3、下载安装Cygwin。这项参照网上帖子,一般问题不大。

出现的问题:

1、Your cygwin is too old. You are running 3.4.10-1.x86_64, but at least cygwin 1.7 is required. Please upgrade

解决方法:

openjdk\common\autoconf\generated-configure.sh,注释cygwin版本检查部分

2、java.lang.RuntimeException: time is more than 10 years from present: 138852720000

解决方法:

将284行10年改成50年。

3、CreateJars.gmk文件问题

java 复制代码
make[2]: *** [CreateJars.gmk:268:/cygdrive/e/hub/openjdk/jdk8u/build/windows-x86_64-normal-server-release/images/lib/_the.rt.jar.contents] 错误 1
make[2]: *** 正在等待未完成的任务....
make[1]: *** [BuildJdk.gmk:101:images] 错误 2
make: *** [/cygdrive/e/hub/openjdk/jdk8u//make/Main.gmk:136:images-only] 错误 2

解决方法:

使用本地git shell工具编辑CreateJars.gmk文件。

cd jdk/make

vi CreateJars.gmk

在268行,有两处:.class$$,在$$之前插入一个特殊字符。做法如下:

i进入编辑模式,ctrl+v,ctrl+m,按esc退出,保存,退出。

目录结构:

在Cygwin64 终端中执行命令

1、bash ./configure --enable-debug --with-target-bits=64 --with-boot-jdk=/cygdrive/c/jdk1.8.0_131 --with-freetype=/cygdrive/d/jdk8_src/freetype-2.13.2/

执行成功结果:

2、编译 make all

执行成功结果:

大概等待约20分钟,不同机器时间不一。

生成的文件目录

j2sdk-image目录下边的目录结构我们就比较熟悉了,就是我们平常使用的jdk目录。

查看java版本:

执行HelloWorld

java 复制代码
public class HelloWorld{
	public static void main(String[] args){
		System.out.println("Hello world !");
	}
}


素材:https://pan.baidu.com/s/184Szg44DfUL8dEgeXmq9Fg?pwd=1234