Win10下编译OpenJDK8

 踩了无数的坑之后终于成功的在Windows10下编译了OpenJDK8,在Windows下编译JDK确实比较麻烦,所以在这里记录下本人编译的整个过程,可以作为备忘的同时还能分享给他人

相关参考文章

文本在编写和实施过程中参考了如下的博文或文章:

https://blog.csdn.net/wqlinloveruby/article/details/80409031

https://www.jianshu.com/p/e85f93cc74cb

OpenJDK源码目录下的README-builds.html官方文档

编译环境

  1. Windows10专业版64位;

编译前准备

Tip: 以下软件的安装和解压目录尽量不要包含中文或空格,不然可能会出现问题

1.安装 Visual Studio 2010 Professional

 在windows下编译JDK需要使用Visual Studio 2010 Professional

推荐下载地址:https://msdn.itellyou.cn/

最好下载英文版的IDE,不然可能会出现问题,下载完成后只用勾选安装C++部分就行

2. 准备OpenJDK8

 首先下载OpenJDK8,推荐下载地址:https://download.java.net/openjdk/jdk8 , 下载完成后解压

3. 编译JDK环境安装

 编译OpenJDK需要本机先安装上JDK作为编译JDK,而且该编译JDK的版本必须要使用前一个版本的JDK,编译OpenJDK8需要安装JDK7 Update 7 以后的版本。

首先下载Oracle JDK7 并解压,推荐下载地址:https://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html

下载完成后配置JDK环境变量(JAVA_HOME、Path、classpath)

配置完后验证下:

4. 安装Cygwin

 编译JDK需要使用到Unix和Linux上的一些工具软件,Cygwin可以在Windows上运行这些系统上的软件

推荐下载地址:http://www.cygwin.com/

下载最新版的Cygwin后安装,由于默认的安装只会安装一些必要的软件,所以安装过程中需要选择安装一些额外的包,需要的包如下图:

Tip: 如果已经安装完了Cygwin软件后,想要继续安装其他的软件包,可以再次运行Cygwin的安装程序,在过程中确保其选中了本地的Cygwin安装目录,一直点击下一步后会出现选择安装包的界面。

5. 准备FreeType-2.7

编译JDK需要用到FreeType,它是一个字体渲染库,官方文档中没有提及,但它是必须的。

最好使用2.7版本的,我先前使用较新版本的会出现问题。

推荐下载地址:https://www.freetype.org/ ,下载完成后解压

运行Visual Studio 2010,依次点击 File -> Open -> Project/Solution

选择打开 freetype-2.7\builds\windows\vc2010\freetype.sln 文件

选中项目后右击选择Properties,弹出窗口后操作如下图:



点击应用后再点击确定关闭窗口,右击项目,点击 Build 按钮后成功编译出lib文件。

再次右击项目,点击 Properties按钮,弹出窗口。



点击应用后再点击确定关闭窗口;右击项目,点击 Build 按钮后成功编译出dll文件。

在 freetype-2.7/ 目录下新建 lib 目录

将 freetype-2.7\objs\vc2010\x64\ 目录下的 freetype.lib 和 freetype.dll 两个文件拷贝到lib目录下

开始编译

1.生成编译配置脚本

运行Cygwin,cd 进入OpenJDK8的根目录

Tip :Cygwin中的目录可以直接用Windows的目录标记方式,比如:‘D:\DirName\file.txt’,单必须使用单引号包围,也可以使用类似linux的形式:如: /cygdrive/d/DirName/file.txt,推荐使用后一种方式兼容性较好。

输入如下命令:

./configure --with-freetype=**/freetype-2.7/ --with-target-bits=64 --enable-debug
  • 1

注意以上的freetype路径替换成你本机上的路径

运行成功后显示如下:

如果生成配置文件失败,请查看下面的失败问题处理

2.编译JDK

Cygwin切换到JDK根目录下

执行如下命令

make all
  • 1

命令执行后会开始编译,编译过程可能比较久,具体看机器性能

编译成功后显示如下:



如果编译失败请查看下面的失败问题处理

3.验证编译结果

在这里仅简单验证一下,官方说需要用jtreg来进行回归测试,但该测试比较麻烦和耗时所以就先忽略

运行 cmd.exe ,进入目录 openjdk8\build\windows-x86_64-normal-server-fastdebug\jdk\bin

依次输入命令:

javac -version

java -version

可以看到自己编译的JDK包含了一些独特的信息

失败问题处理

下面描述了本人在编译过程中遇到过的问题和解决方法,如果你遇见了其他的问题,请参考其他相关博客或资料,同时欢迎在评论区探讨该问题或解决方案

1.提示cygwin太老,但使用的cygwin确实是1.7版本以后的版本

提示如下如图:



这是由于OpenJDK8自带的生成配置的脚本的问题。

文本编辑器打开OpenJDK目录下的 openjdk8\common\autoconf\generated-configure.sh 这个文件

搜索上面的提示文字“Your cygwin is too old

将if条件语句注释掉

2.编译images库时失败

执行编译到images相关库的时候会出错

错误信息中显示了一个CreateJars.gmk出错,查阅相关资料后发现是文件中需要加上两个回车符号,也就是 '\r’表示为CR这个符号。

用 Notepad++ 软件打开OpenJDK目录里的 CreateJars.gmk 这个文件

依次点击菜单栏中的:视图 -> 显示符号 -> 显示所有符号

然后就可以看到所有的符号,包括换行符和回车符

找到文件中如下的地方:

在两个 ‘class$$’ 中间加入回车符号(按下Ctrl + M),如下图:

修改完成后保存,执行 make clean 命令清理后再次执行 make all 编译

原文地址:https://blog.csdn.net/qq0012520/article/details/86014579

Win10下编译OpenJDK8的更多相关文章

  1. Centos7 下编译 Openjdk8

    本文主要介绍如何在 Centos7 下编译 Openjdk8 源码,<深入理解java虚拟机>第二版网上好多 openjdk7 的帖子,编译 jdk8 和 7 还是有些差别的,比如大家经常 ...

  2. JAVA虚拟机学习笔记(一)Windows10下编译OpenJDK8

    转载请注明源地址:http://www.cnblogs.com/lighten/p/5906359.html 1. 编译环境的准备 1.1 JDK源码下载 OpenJDK是JAVA发展史中的一个开源项 ...

  3. JVM-Ubuntu18.04.1下编译OpenJDK8

    近期开始学习JVM,看的是周老师的<深入理解Java虚拟机>,打算先自己编译个JDK来提升对JVM的兴趣.本文分三部分来描述编译OpenJDK的过程,分别是编译前准备工作.构建编译环境.进 ...

  4. CenoOS 7环境下编译OpenJDK8

    一.准备工作 1.与编译jdk7的不同(如未编译过Jdk7可以不看) 1.1.不再使用"$make sanity"来检查编译环境,而是改用"$./configure&qu ...

  5. ubuntu-12.04.5下编译openjdk8

    bash ./configure --with-target-bits=64 --with-boot-jdk=/usr/java/jdk1.7.0_80/ --with-debug-level=slo ...

  6. [笔记]Win10下编译Tesseract-OCR 4.0

    Tesseract-OCR 4.0使用了LSTM网络,准确性相比3.x版本提升不少. 官网提供的安装包会提供一堆DLL,而我需要的是一个静态链接的exe文件,所以只能重新编译. 编译环境 Window ...

  7. mac下编译openjdk8?so easy!

    写在最前面的话:建议第一次编译jdk的朋友,查阅任何博客都不如认真读一遍源码中的README-builds.html 环境:macOS High Sierra(10.13.5) 编译jdk:openj ...

  8. linux下编译openjdk8

    一.准备工作                                                           1.0 工作环境 Ubuntu 12.04,32位机 1.1.安装JD ...

  9. [原]win10下编译lua5.3.4

    1.下载lua源码http://www.lua.org/ftp/ 2.打开vs2012工具命令提示 3.cd 到lua源码的src目录 4.依次执行以下代码 cl /MD /O2 /c /DLUA_B ...

随机推荐

  1. volatile学习

    第一.java内存模型 共享内存模型指的就是Java内存模型(简称JMM),JMM决定一个线程对共享变量的写入时,能对另一个线程可见. 从抽象的角度来看,JMM定义了线程和主内存之间的抽象关系:线程之 ...

  2. 教材代码完成情况测试P171(课上测试)

    一.任务详情 0 在Ubuntu中用自己的有位学号建一个文件,教材p171 Example7_7 增加一个类DangerException2, 显示"超轻"异常,超轻的阈值minC ...

  3. oracle存储过程及sql优化-(三)

    接下来介绍上篇接触到的存储过程中的sql语句 insert into TMP_GT3_sbfgl_WJSTJB SELECT NSR.NSRSBH, NSR.NSRMC, NSR.SCJYDZ, ca ...

  4. php_network_getaddresses: getaddrinfo failed

    在使用 file_get_contents远程请求url时,出现警告:php_network_getaddresses: getaddrinfo failed: Name or servicenot ...

  5. 【剑指offer38】字符串的排列

    如果没有要求字典序排序,则直接采用递归的思想,将字符串的排列看成两步,第一步,交换第一个字母和任意一个字母(包括自己,但不包括和自己相等的其他字母)固定第一个字母,固定第一个字母,然后对后面的字符串也 ...

  6. 权重随机算法Java实现

    权重随机算法在抽奖,资源调度等系统中应用还是比较广泛的,一个简单的按照权重来随机的实现,权重为几个随机对象(分类)的命中的比例,权重设置越高命中越容易,之和可以不等于100: 简单实现代码如下: ? ...

  7. Ruby小白入门笔记之<Rubymine工具的快捷键>

    智能快捷 Ctrl+Alt+G:弹出Generate Ctrl+Alt+L:格式化代码 Alt+F1:切换视图(Project, Structure, etc.). Alt+F2:弹出预览窗口,可选择 ...

  8. 第九章 SpringCloud之Zuul路由

    ############Zuul简单使用################ 1.pom.xml <?xml version="1.0" encoding="UTF-8 ...

  9. IDEA使用git提交代码时,点了commit之后卡死在performing code analysis部分,或者performing code analysis结束后没有进入下一步操作

    把"Perform code analysis" 和 "Check TODO" 复选框前面的勾去掉就好了. 这个可能是因为所分析的目标文件太大了,造成一直分析不 ...

  10. 【DVWA】Brute Force(暴力破解)通关教程

    日期:2019-08-01 14:49:47 更新: 作者:Bay0net 介绍:一直以为爆破很简单,直到学习了 Burp 的宏录制和匹配关键词,才发现 burp 能这么玩... 0x01. 漏洞介绍 ...