鉴于目前Mac下编译openJDK的文章较为杂乱且步骤不够清晰明了,写下自己编译OpenJDK的过程,希望能帮助大家少走弯路。
编译/调试 环境
- MacOS Big Sur
- Clion 2021.2
- IDEA 2021.2
- Terminal(Mac自带的终端)
编译步骤
下载源码
进入
https://hg.openjdk.java.net/jdk/
选择你需要编译的版本。
进入下载目录并解压
选择你下载的压缩包对应的解压命令解压。
打开终端并进入源码目录
本次编译我的jdk源码目录为:
/Users/alex/apps/jdk11-1ddf9a99e4ad
。
安装相关工具
brew install FreeType
brew install Autoconf
brew install ccache
如果上述安装中提示你有什么文件没找到,无法打开,进入那个目录,将对应的文件找出并且重命名即可。注意以下命令中的
${username}
需替换为你的用户名。
cd /Users/${username}/Library/Caches/Homebrew/downloads/
## 假设提示你 883c03046842ddf554a02eed5bce40b6641f7f2fe2b6ee8fda64c663fd609239--pcre2-10.37_1.big_sur.bottle.tar.gz 没找到
ls | grep 'pcre2'
## 输出38089acf544a53cf2436d7390138f6b0cda498f61a14c854457242f07a99e886--pcre2--10.37_1.big_sur.bottle.tar.gz
mv 38089acf544a53cf2436d7390138f6b0cda498f61a14c854457242f07a99e886--pcre2--10.37_1.big_sur.bottle.tar.gz 883c03046842ddf554a02eed5bce40b6641f7f2fe2b6ee8fda64c663fd609239--pcre2-10.37_1.big_sur.bottle.tar.gz
初始化配置
bash ./configure --with-target-bits=64 --enable-ccache --with-jvm-variants=server --enable-dtrace --with-boot-jdk-jvmargs="-Xlint:deprecation -Xlint:unchecked" --disable-warnings-as-errors --with-debug-level=slowdebug 2>&1 | tee configure_mac_x64.log
开始编译
make images
调试
源码目录新增
CMakeLists.txt
文件
CMakeLists.txt
文件内容:
cmake_minimum_required(VERSION 3.16)
project(hotspot)
file(GLOB_RECURSE SOURCE_FILES "*.cpp" "*.hpp" "*.c" "*.h")
add_executable(hotspot ${SOURCE_FILES})
打开Clion导入openJDK
File->Open->choose your jdk path->As Cmake project
等待Clion index完成
构建编译环境
右上角
edit configurations
,选择
hotspot | Debug
。
-
Executable,选择你编译好的java可运行程序。我的目录:
/Users/alex/apps/jdk11-1ddf9a99e4ad/build/macosx-x86_64-normal-server-slowdebug/jdk/bin/java
- Program arguments,-version。
- Before launch,下面有一栏:Build。删掉。
-
点运行,不出意外就能看见下面的输出。
至此,调试环境构建完毕。
debug
以下内容引用自简书
https://www.jianshu.com/p/0fc877be4c3d
,侵权删。
如果你点的是debug而不是run,你会发现你没打断点,但是会进入以下这个断点,此时我们在LLDB tab下执行
pro hand -p true -s false SIGSEGV SIGBUS
命令即可。
不过每次debug的时候都要输入这么一句就很麻烦,所以我们可以在~/.lldbinit文件中写入如下内容(其中main.c文件的路径自行替换)
breakpoint set --file /Users/alex/apps/jdk11-1ddf9a99e4ad/src/java.base/share/native/launcher/main.c --line 98 -C "pro hand -p true -s false SIGSEGV SIGBUS" --auto-continue true
vim ~/.lldbinit
外部JAVA文件调试JDK
edit configurations-> 左上角“+” -> Custom Build Application.
红圈为需要自行配置。
调试结果: