OSX Mojave 编译 & 源码调试 openJdk 8
/ / 点击 / 阅读耗时 5 分钟为了更好的理解和学习 Java 和 Hotspot 虚拟机,于是在 OSX Mojave 编译 & 源码调试 openJdk 8,中间遇到了很多问题,记录分享一下。
坑
- Xcode 版本
- 源码中不规范写法
- slowdebug 中官方无解的 crash
准备
- Xcode 9.1
-
xcode-select --install
- Homebrew
-
brew install mercurial
- XQuartz
- JDK 8
-
brew install freetype
注:这里使用老版本的 Xcode,因为 Xcode 10 后,libstd
废除,改用 libc++
,导致编译错误。
下载源码
hg clone http://hg.openjdk.java.net/jdk8/jdk8 JDK8
cd JDK8
bash ./get_source.sh
编译相关设置
创建 envsetup.sh
文件。
touch envsetup.sh
写入如下内容:
1 | # 设定语言选项,必须设置 |
然后执行 source envsetup.sh
。
configure
1 | bash ./configure \ |
make
编译!
make all
测试
编译结束后,会看到如下图输出:
1 | $ cd build/macosx-x86_64-normal-server-slowdebug/jdk/bin |
这里 slowdebug 会出现 crash,需要注释掉如下代码:
导入 Clion
File->ImportProject
,导入 Hotspot 目录。
Clion 会生成 CMakeList 文件。不用理会,无脑 next。
源码调试
在 Clion 中,Edit configuration
:
下一步点击 debug
按钮:
Happy Hacking!
参考
- https://imkiva.com/2018/02/24/building-openjdk8-on-macos/
- https://imkiva.com/2018/02/24/debugging-hotspot-using-xcode/
- https://stackoverflow.com/questions/50963410/build-openjdk9-on-macos-and-crash
- https://stackoverflow.com/questions/50678467/building-openjdk-9-on-mac-os/54954805#54954805
- https://www.jianshu.com/p/ee7e9176632c
全文完。