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|zipgcc 是一套哦!
建议所有读者,读完全篇再进行安装,会避免不少坑! 我搞这个破环境花了一天一晚上,人都傻了!我的Mac半个多小时就装好了.吐槽一下~~
1. 环境准备
OpenJDK12
源码freeType 2.9.1
(我用的是这个版本)VS 2017
(注意英文版)因为我一开始默认安装的中文版,会提示 Could not find a C compiler.

模拟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. 配置检查环境成功

4. 编译
make all
long time later……………………………………………….

还是建议在MAC或者Linux下编程吧!Windows就适合打游戏了
image-20200724124514541 这就是需要VS的原因哦!!
喵了眼:装的软件都在跑么? 装软件也是费劲!!!
5. 成功

这次比几年前编译JDK8 快了一半啊! 同一个破电脑!!!
用时 1个小时左右
编译完成之后会在build目录下生成一个C库-->
这里并没有带上 debug的选项.带上会有相对应的debug 版本
运行
java -versionimage-20200724135213628 由于 JDK12已经停止更新,我实际没有用OpenJDK12 直接上13
image-20200729144040429
6. Debug调试JDK
在书中,用到的是
Clion
.所以要用vs 调试的自行寻找教程吧!!! 其实我是看那玩意儿不咋地,太tmd大了!!!所以我会过河拆桥,把用到的软件都删了...
在<深入理解java虚拟机 第三版 >1.6.5 节有说到!



为了实现更加完整的debug体验,并且修改源码之后可重新编译就要修改
CMakeLists.txt
文件但是由于JDK12已经
EOL
了,所以该文件已经被删除.建议的可以直接编译13或者14的版本.但是忙活了这么大半天怎么行啊...作者的GitHUb地址
Clion 需要 Cmark 环境
Cmark 环境
Cygwin安装


补充一点: 明显上面c 和c++编译器都没有,还是需要在cygwin里面安装gcc组件
image-20200724152322367
设置好 cmark之后,编译器终于有反应了啊

debug尝试
image-20200724150205977 image-20200724150846080 image-20200724155725686
building了很长很长时间了~~我的天啊!!!
各种错误,各种坑
找不到DLLS下的dlls

在执行命令中指定一下该路径!
A microsoft compiler is required
A microsoft compiler is required
:
即使指定了vs路径,如果不在vs命令行环境中执行将会报count not find C compiler

mack 出错
一般在配置环境监测成功之后,运行make 应该不会有太大的问题,而我一开始就直接报错了!
原因就是:安装的make 版本太高了,我把make 4.3.x 降到了 make 4.2.1 就可以了!

感谢这下面网友提醒:
雪人符号错误--> 要将该符号换成三个特殊的符号
☃
变成
☃
编译OpenJDK12:test_json.cpp error C2143 语法错误



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

尽量使用相同版本的Boot JDK 编译
这是我使用 JDK 11 编译 OpenJDK12 报的错!

666. Say-GoodBye
















