暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Windows10 下编译OpenJDK12--感谢周志明大神更新Java虚拟机第三版

努力努力再努力xLg 2020-07-30
1262


  • 1. 环境准备

  • 2. 运行代码

  • 3. 配置检查环境成功

  • 4. 编译

  • 5. 成功

  • 6. Debug调试JDK

  • 各种错误,各种坑

    • 找不到DLLS下的dlls

    • `A microsoft compiler is required`

    • mack 出错

    • 雪人符号错误--> 要将该符号换成三个特殊的符号

    • 尽量使用相同版本的Boot JDK 编译

  • 666. Say-GoodBye


年前周志明大神更新了<深入理解Java虚拟机>第三版,里面编译的是OpenJDK12

这里出个小教程

说说踩的坑

下载前面的话

cygwin需要安装的package

make|unzip|gcc|gdb|autoconf|zip

gcc 是一套哦!

建议所有读者,读完全篇再进行安装,会避免不少坑! 我搞这个破环境花了一天一晚上,人都傻了!我的Mac半个多小时就装好了.吐槽一下~~

1. 环境准备

  1. OpenJDK12
    源码
  2. freeType 2.9.1
    (我用的是这个版本)
  3. VS 2017
    (注意英文版)
    1. 因为我一开始默认安装的中文版,会提示      Could not find a C compiler.
         
  4. 模拟Linux环境:Cygwin

官网下载源码真的超级慢:这里提供编译的版本和软件方面使用(文件中的treeType 理论上不支持别的版本(因为该文件是针对JDK生成的!)

不适用对应的版本会报如下错误:

image-20200724103745012

链接:OpenJDK12 + 编译软件和环境所需文件提取码:

如果想自己安装可以根据源码目下doc文档中的build.md 文件

其中编译最关键的一步就是在安装Cygwin时,要手动安装四个依赖!这里就懒得列出来了(注意版本信息哦!)

所有的文件都保持英文,并且是英文路径,不要有空格等特殊符号

2. 运行代码

 ./configure --with-freetype-include=/cygdrive/d/develop/java/openjdk-jdk-12-21/third/freetype-2.9.1/src/include --with-freetype-lib=/cygdrive/d/develop/java/openjdk-jdk-12-21/third/freetype-2.9.1/lib --with-boot-jdk=/cygdrive/d/develop/java/openjdk-jdk-12-21/third/openjdk-12-x64_bin --disable-warnings-as-errors --with-toolchain-version=2017 --with-target-bits=64 --with-tools-dir="/cygdrive/c/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Auxiliary/Build" --with-ucrt-dll-dir="/cygdrive/d/Windows Kits/10/Redist/10.0.17763.0/ucrt/DLLs/x64"

./configure --with-boot-jdk=/cygdrive/d/develop/java/jdk-13.0.2 --disable-warnings-as-errors

这里的路径都是跟上面的文件匹配好的!

但是注意一下自己电脑中其他文件的地址,按需修改

注意:

建议在VS 的命令行中执行Cygwin,然后切换到OpenJdk根目录执行configure

如果不适用vs中的命令行执行可能会报 找不到 MiroSort 编译器的错误

image-20200724104219686

使用vs 命令行时,注意使用管理员运行:

3. 配置检查环境成功

image-20200724110627709

4. 编译

make all

long time later……………………………………………….

image-20200724124217285

还是建议在MAC或者Linux下编程吧!Windows就适合打游戏了

image-20200724124514541

这就是需要VS的原因哦!!

喵了眼:装的软件都在跑么? 装软件也是费劲!!!

5. 成功

image-20200729143708938

这次比几年前编译JDK8 快了一半啊! 同一个破电脑!!!

用时 1个小时左右

编译完成之后会在build目录下生成一个C库-->

这里并没有带上 debug的选项.带上会有相对应的debug 版本

运行java -version

image-20200724135213628

由于 JDK12已经停止更新,我实际没有用OpenJDK12 直接上13

image-20200729144040429

6. Debug调试JDK

在书中,用到的是Clion
.所以要用vs 调试的自行寻找教程吧!!! 其实我是看那玩意儿不咋地,太tmd大了!!!所以我会过河拆桥,把用到的软件都删了...

在<深入理解java虚拟机 第三版 >1.6.5 节有说到!

image-20200724135517743
image-20200724135543967
image-20200724135951631

为了实现更加完整的debug体验,并且修改源码之后可重新编译就要修改CMakeLists.txt
文件

但是由于JDK12已经EOL
了,所以该文件已经被删除.建议的可以直接编译13或者14的版本.但是忙活了这么大半天怎么行啊...

作者的GitHUb地址

Clion 需要 Cmark 环境

Cmark 环境

Cygwin安装

image-20200724145928838
image-20200724150053286

补充一点: 明显上面c 和c++编译器都没有,还是需要在cygwin里面安装gcc组件

image-20200724152322367

设置好 cmark之后,编译器终于有反应了啊

image-20200724150422027

debug尝试

image-20200724150205977
image-20200724150846080
image-20200724155725686

building了很长很长时间了~~我的天啊!!!

各种错误,各种坑

找不到DLLS下的dlls

image-20200724103912110

在执行命令中指定一下该路径!

A microsoft compiler is required

A microsoft compiler is required
   :

即使指定了vs路径,如果不在vs命令行环境中执行将会报count not find C compiler

image-20200724104207975

mack 出错

一般在配置环境监测成功之后,运行make 应该不会有太大的问题,而我一开始就直接报错了!

原因就是:安装的make 版本太高了,我把make 4.3.x 降到了 make 4.2.1 就可以了!

image-20200724122130554

感谢这下面网友提醒:

雪人符号错误--> 要将该符号换成三个特殊的符号


变成
☃

编译OpenJDK12:test_json.cpp error C2143 语法错误

image-20200727084730355
image-20200727084716563
image-20200727085008266

这就是前面提到的 make 出错原因.只需要重新执行cygwin程序,重新选择一下版本就好了

image-20200724122158101

尽量使用相同版本的Boot JDK 编译

这是我使用 JDK 11 编译 OpenJDK12 报的错!

image-20200724123000427

666. Say-GoodBye

image-20200724151711118


文章转载自努力努力再努力xLg,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论