Java技术指南「OpenJDK专题」想不想编译属于你自己的JDK呢?(Windows环境)

Posted 李浩宇Alex

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java技术指南「OpenJDK专题」想不想编译属于你自己的JDK呢?(Windows环境)相关的知识,希望对你有一定的参考价值。

Win10下编译OpenJDK8

编译环境

  • Windows10专业版64位;
编译前准备
  1. 安装 Visual Studio 2010 Professional

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

  1. 准备OpenJDK8
  1. 编译JDK环境安装(如果已经安装,跳过此部)

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

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

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

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

  1. 准备FreeType-2.7
  • 编译JDK需要用到FreeType,它是一个字体渲染库,官方文档中没有提及,但它是必须的。
  • 最好使用2.7版本的,我先前使用较新版本的会出现问题。
  • 推荐下载地址:https://www.freetype.org/ ,下载完成后解压: https://www.freetype.org/download.html

  • 运行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. 生成编译配置脚本
输入如下命令:
./configure --with-freetype=你本机路径/freetype-2.7/ --with-target-bits=64 --enable-debug
  1. 编译JDK
make all
  1. 验证编译结果
javac -version
java -version

失败问题处理

  1. 提示cygwin太老,但使用的cygwin确实是1.7版本以后的版本,提示如下如图:
  • 这是由于OpenJDK8自带的生成配置的脚本的问题。

  • 文本编辑器打开OpenJDK目录下的 openjdk8\\common\\autoconf\\generated-configure.sh 这个文件搜索上面的提示文字“Your cygwin is too old在这里插入图片描述,将if条件语句注释掉
  1. 编译images库时失败
    执行编译到images相关库的时候会出错

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

  • 用 Notepad++ 软件打开OpenJDK目录里的 CreateJars.gmk 这个文件
  • 依次点击菜单栏中的:视图 -> 显示符号 -> 显示所有符号
  • 然后就可以看到所有的符号,包括换行符和回车符

找到文件中如下的地方:

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

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

参考文章

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

https://blog.csdn.net/wqlinloveruby/article/details/80409031
https://www.jianshu.com/p/e85f93cc74cb
OpenJDK源码目录下的README-builds.html官方文档
https://blog.csdn.net/qq0012520/article/details/86014579

以上是关于Java技术指南「OpenJDK专题」想不想编译属于你自己的JDK呢?(Windows环境)的主要内容,如果未能解决你的问题,请参考以下文章

我为什么要自己编译openjdk8以及那些坑

从源代码构建OpenJDK库?

Java技术专题「编译器专题」深入分析探究“静态编译器”(JAVAIDEAECJ编译器)是否可以实现代码优化?

Java技术专题「编译器专题」重塑认识Java编译器的执行过程(常量优化机制)

Java技术专题「编译器专题」重塑认识Java编译器的执行过程(消除数组边界检查+公共子表达式)

Java技术指南「编译器专题」深入分析探究“静态编译器”(JAVAIDEAECJ编译器)